summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qwidget.cpp
diff options
context:
space:
mode:
authorFabien Freling <fabien.freling@nokia.com>2011-02-14 15:23:00 (GMT)
committerFabien Freling <fabien.freling@nokia.com>2011-02-15 12:49:38 (GMT)
commit78c5c1cae5f9e100bfb7388f68208406f0db4b42 (patch)
tree3dc89f26963c084ead61ec0ccefac9981e94866c /src/gui/kernel/qwidget.cpp
parent7da16ed9888133039c6d7a261fc7c4b61d9b6114 (diff)
downloadQt-78c5c1cae5f9e100bfb7388f68208406f0db4b42.zip
Qt-78c5c1cae5f9e100bfb7388f68208406f0db4b42.tar.gz
Qt-78c5c1cae5f9e100bfb7388f68208406f0db4b42.tar.bz2
Optimize the rendering path for the unified toolbar.
The over flushing of the toolbar had a huge performance impact so now we only flush the toolbar when necessary and moved the rendering out of the flushing process. Reviewed-by: Richard Moe Gustavsen
Diffstat (limited to 'src/gui/kernel/qwidget.cpp')
-rw-r--r--src/gui/kernel/qwidget.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index 04bc2fb..84a839f 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -324,6 +324,7 @@ QWidgetPrivate::QWidgetPrivate(int version)
hasOwnContext = false;
isInUnifiedToolbar = false;
unifiedSurface = 0;
+ toolbar_ancestor = 0;
flushRequested = false;
#endif // QT_MAC_USE_COCOA
#ifdef QWIDGET_EXTRA_DEBUG
@@ -10360,6 +10361,10 @@ void QWidget::repaint(const QRect &rect)
return;
if (hasBackingStoreSupport()) {
+ if (qt_widget_private(this)->isInUnifiedToolbar) {
+ qt_widget_private(this)->unifiedSurface->renderToolbar(this, true);
+ return;
+ }
QTLWExtra *tlwExtra = window()->d_func()->maybeTopData();
if (tlwExtra && !tlwExtra->inTopLevelResize && tlwExtra->backingStore) {
tlwExtra->inRepaint = true;
@@ -10389,6 +10394,10 @@ void QWidget::repaint(const QRegion &rgn)
return;
if (hasBackingStoreSupport()) {
+ if (qt_widget_private(this)->isInUnifiedToolbar) {
+ qt_widget_private(this)->unifiedSurface->renderToolbar(this, true);
+ return;
+ }
QTLWExtra *tlwExtra = window()->d_func()->maybeTopData();
if (tlwExtra && !tlwExtra->inTopLevelResize && tlwExtra->backingStore) {
tlwExtra->inRepaint = true;
@@ -10446,6 +10455,10 @@ void QWidget::update(const QRect &rect)
}
if (hasBackingStoreSupport()) {
+ if (qt_widget_private(this)->isInUnifiedToolbar) {
+ qt_widget_private(this)->unifiedSurface->renderToolbar(this);
+ return;
+ }
QTLWExtra *tlwExtra = window()->d_func()->maybeTopData();
if (tlwExtra && !tlwExtra->inTopLevelResize && tlwExtra->backingStore)
tlwExtra->backingStore->markDirty(rect, this);
@@ -10470,6 +10483,10 @@ void QWidget::update(const QRegion &rgn)
}
if (hasBackingStoreSupport()) {
+ if (qt_widget_private(this)->isInUnifiedToolbar) {
+ qt_widget_private(this)->unifiedSurface->renderToolbar(this);
+ return;
+ }
QTLWExtra *tlwExtra = window()->d_func()->maybeTopData();
if (tlwExtra && !tlwExtra->inTopLevelResize && tlwExtra->backingStore)
tlwExtra->backingStore->markDirty(rgn, this);