widgets: Fix painting to a fully transparent top level widget
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>
Mon, 2 Apr 2012 09:59:04 +0000 (11:59 +0200)
committerQt by Nokia <qt-info@nokia.com>
Sun, 15 Apr 2012 04:14:00 +0000 (06:14 +0200)
commit83fc52e3b4005d946c731577f8f49becae948c39
tree180ff69aae6462273a79585d7da5ed4a1b19b747
parent5cb2fbe088ee5b15c2a35ba175e3c39a2fac5c03
widgets: Fix painting to a fully transparent top level widget

QWS used to have a line to change the composite mode from SourceOver
to Source for the top level widget. This wasn't used with QPA and I
removed the internal DontSetCompositionMode in qtbase. It turns out that
the QWS way is the most efficient one to initialize the background of
the widget.

The alternative is to have the QPlatformBackingStore::beginPaint
always clear the entire to be painted area and then paint the background
of the widget. The difference of painting each pixel once or twice is
noticable on embedded platforms and in the range of one to two fps.

Reproduce the issue with:
echo "QWidget {background: transparent}" > style.css
./examples/widgets/wiggly/wiggly -stylesheet style.css

Task-number: QTBUG-24526
Change-Id: Ica4c980bb3bf6eb87ddb5b510ac7493292d01543
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
src/gui/painting/qplatformbackingstore_qpa.cpp
src/widgets/kernel/qwidget.cpp
src/widgets/kernel/qwidget_p.h