diff options
author | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2009-06-04 18:58:34 (GMT) |
---|---|---|
committer | Andreas Aardal Hanssen <andreas.aardal.hanssen@nokia.com> | 2009-06-09 07:34:51 (GMT) |
commit | 9aa44bff88f377f056eafe5d9f24c88d81f477e5 (patch) | |
tree | 47e4779da2f16cfeba4bd780471ec48be1eff93d /src | |
parent | 4af92dcf716ee3c2fc4673aadd07fde19b7bffed (diff) | |
download | Qt-9aa44bff88f377f056eafe5d9f24c88d81f477e5.zip Qt-9aa44bff88f377f056eafe5d9f24c88d81f477e5.tar.gz Qt-9aa44bff88f377f056eafe5d9f24c88d81f477e5.tar.bz2 |
Removes odd artifact in the chip demo.
Calling repaint() instead of update() is bad when having multiple
views (which GV perfectly supports). The result is that e.g. when
moving a chip in the chip demo, there's a visible lag between
each view. It can also be a performance killer on QWS, where
the surface is locked for each repaint().
Instead of calling repaint() we call update() as before, but we also
make sure the updates are processed immediately.
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/graphicsview/qgraphicsscene.cpp | 9 | ||||
-rw-r--r-- | src/gui/graphicsview/qgraphicsview.cpp | 6 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index eaf00a0..4b54c08 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -697,6 +697,15 @@ void QGraphicsScenePrivate::_q_processDirtyItems() // changed signal is emitted, so we emit it now. _q_emitUpdated(); } + + // Immediately dispatch all pending update requests on the views. + for (int i = 0; i < views.size(); ++i) { + QWidget *viewport = views.at(i)->d_func()->viewport; + if (qt_widget_private(viewport)->paintOnScreen()) + QCoreApplication::sendPostedEvents(viewport, QEvent::UpdateRequest); + else + QCoreApplication::sendPostedEvents(viewport->window(), QEvent::UpdateRequest); + } } /*! diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp index c91e0d1..87b5e3f 100644 --- a/src/gui/graphicsview/qgraphicsview.cpp +++ b/src/gui/graphicsview/qgraphicsview.cpp @@ -814,11 +814,11 @@ void QGraphicsViewPrivate::processPendingUpdates() if (viewportUpdateMode == QGraphicsView::BoundingRectViewportUpdate) { if (optimizationFlags & QGraphicsView::DontAdjustForAntialiasing) - viewport->repaint(dirtyBoundingRect); + viewport->update(dirtyBoundingRect); else - viewport->repaint(dirtyBoundingRect.adjusted(-2, -2, 2, 2)); + viewport->update(dirtyBoundingRect.adjusted(-2, -2, 2, 2)); } else { - viewport->repaint(dirtyRegion); // Already adjusted in updateRect/Region. + viewport->update(dirtyRegion); // Already adjusted in updateRect/Region. } dirtyBoundingRect = QRect(); |