diff options
author | Fabien Freling <fabien.freling@nokia.com> | 2011-02-14 15:23:00 (GMT) |
---|---|---|
committer | Fabien Freling <fabien.freling@nokia.com> | 2011-02-15 12:49:38 (GMT) |
commit | 78c5c1cae5f9e100bfb7388f68208406f0db4b42 (patch) | |
tree | 3dc89f26963c084ead61ec0ccefac9981e94866c /src/gui/kernel/qwidget.cpp | |
parent | 7da16ed9888133039c6d7a261fc7c4b61d9b6114 (diff) | |
download | Qt-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.cpp | 17 |
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); |