summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-06-04 18:58:34 (GMT)
committerAndreas Aardal Hanssen <andreas.aardal.hanssen@nokia.com>2009-06-09 07:34:51 (GMT)
commit9aa44bff88f377f056eafe5d9f24c88d81f477e5 (patch)
tree47e4779da2f16cfeba4bd780471ec48be1eff93d /src
parent4af92dcf716ee3c2fc4673aadd07fde19b7bffed (diff)
downloadQt-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.cpp9
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp6
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();