diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2011-03-29 09:07:49 (GMT) |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2011-03-29 09:08:41 (GMT) |
commit | 269b61dd08b7e37445f40e3a1d0854bcf85f445b (patch) | |
tree | 777a49f68be4f2d17447c62ffee05947925bf152 /src/gui | |
parent | 2ea1c931713ddca8bbc718e7691867ad117d5a6e (diff) | |
download | Qt-269b61dd08b7e37445f40e3a1d0854bcf85f445b.zip Qt-269b61dd08b7e37445f40e3a1d0854bcf85f445b.tar.gz Qt-269b61dd08b7e37445f40e3a1d0854bcf85f445b.tar.bz2 |
Added preserved contents property to QWindowSurface.
Previously we used hasPartialUpdateSupport() to deduce whether the
window surface's contents are preserved when flush is called or not, but
that limits us from fully supporting platforms which might allow partial
updates even though the surface contents aren't preserved on flush.
If hasPreservedContents() returns false, that means a flush of a region
is never allowed without first painting to that region. If
hasPartialUpdateSupport() returns false, the whole window surface must
always be painted whenever an update is requested. Note that
hasPreservedContents() will typically imply hasPartialUpdateSupport(),
but not vice versa.
Reviewed-by: Bjørn Erik Nilsen
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/painting/qbackingstore.cpp | 4 | ||||
-rw-r--r-- | src/gui/painting/qwindowsurface.cpp | 10 | ||||
-rw-r--r-- | src/gui/painting/qwindowsurface_p.h | 1 |
3 files changed, 13 insertions, 2 deletions
diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp index e5d8abc..a06a121 100644 --- a/src/gui/painting/qbackingstore.cpp +++ b/src/gui/painting/qbackingstore.cpp @@ -1143,9 +1143,9 @@ void QWidgetBackingStore::sync(QWidget *exposedWidget, const QRegion &exposedReg return; } - // If there's no partial update support we always need + // If there's no preserved contents support we always need // to do a full repaint before flushing - if (!windowSurface->hasPartialUpdateSupport()) + if (!windowSurface->hasPreservedContents()) fullUpdatePending = true; // Nothing to repaint. diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp index 9b71818..050805e 100644 --- a/src/gui/painting/qwindowsurface.cpp +++ b/src/gui/painting/qwindowsurface.cpp @@ -332,6 +332,16 @@ bool QWindowSurface::hasPartialUpdateSupport() const return true; } +/*! + Says whether the window surface's contents are preserved on flush. + If not, the window surface contents need to be fully repainted before the + next flush. +*/ +bool QWindowSurface::hasPreservedContents() const +{ + return hasPartialUpdateSupport(); +} + #ifdef Q_WS_QPA #define Q_EXPORT_SCROLLRECT Q_GUI_EXPORT #else diff --git a/src/gui/painting/qwindowsurface_p.h b/src/gui/painting/qwindowsurface_p.h index 4a2775f..95b2ee4 100644 --- a/src/gui/painting/qwindowsurface_p.h +++ b/src/gui/painting/qwindowsurface_p.h @@ -102,6 +102,7 @@ public: virtual bool hasStaticContentsSupport() const; virtual bool hasPartialUpdateSupport() const; + virtual bool hasPreservedContents() const; void setStaticContents(const QRegion ®ion); QRegion staticContents() const; |