[Development] Proposal: Make QPen non-cosmetic by default
Uwe.Rathmann at tigertal.de
Mon Oct 15 21:36:19 CEST 2012
On Mon, 15 Oct 2012 09:58:20 +0200, Samuel Rødal wrote:
> Could you elaborate on what you mean regarding the implementation of the
> subsurfaces concept?
This is an experience from a project I'm working on:
I spend some time on trying to embed an OpenGL widget into an application
using Qt/Embedded. These attempts were made with Qt 4.6 and Qt 4.7 - so
please excuse me when everything written below is obsolete for the
versions of Qt you are interested in.
When you have a look at the configure script for Qt 4.8 you will find a
compiler flag "Q_BACKINGSTORE_SUBSURFACES" that gets enabled as soon as
you enable OpenGL. Its effect is that you can have surfaces with a
different paint engine inside of another surface - what you need when you
have an OpenGL widget embedded in a regular top level window.
With Qt 4.6 I noticed that the translation of the widget content to
screen coordinates was broken ( wrong regions were updated ) only when
enabling Q_BACKINGSTORE_SUBSURFACES - even without using any OpenGL
widget. I spent some time on fixing these bugs ( I remember reading
comments in the Qt code, showing that the developer was aware of the
problems ) and provided some patches that made it into Qt 4.7. ( You
might find the history in the Qt bug tracking system or maybe together
with the applied patches )
But when really trying to work with OpenGL I came across many other
problems. F.e. I remember that OpenGL surfaces are always sorted on top
of regular surfaces ignoring the window stack. I found several situations
where the framework tries to restore the screen from some cache that
doesn't exist for a OpenGL surface ...
Unfortunately at that time the usual answer from the Qt support was that
QPA will be the future and nobody wants to touch QWS anymore. QPA with Qt
4.8 was then declared ( on the mailing list ) as "not yet worth to be
documented" ( please excuse me, when I don't have the words exactly in
memory ) and with Qt 5.0 OpenGL/ES 1.x ( this is all we have for our
different boards ) is not supported any longer.
Not to mention, that in the embedded world you can't simply change the
hardware for many years.
More information about the Development