diff options
author | Anders Bakken <anders.bakken@nokia.com> | 2009-09-17 22:17:16 (GMT) |
---|---|---|
committer | Anders Bakken <anders.bakken@nokia.com> | 2009-09-17 22:28:51 (GMT) |
commit | 215d7c9a57ae531982ec98a5de0ad01589151469 (patch) | |
tree | 84b0caa149cb12458cc91153c40b71c32a853145 | |
parent | 3ec54c15f37c8f74fc86486abf67697eb1f5cded (diff) | |
download | Qt-215d7c9a57ae531982ec98a5de0ad01589151469.zip Qt-215d7c9a57ae531982ec98a5de0ad01589151469.tar.gz Qt-215d7c9a57ae531982ec98a5de0ad01589151469.tar.bz2 |
Fix a bug in QDirectFBWindowSurface::scroll
It seems that one cannot do multiple blits within a double-buffered
surface in overlapping one another without doing a Flip in between. I
find this a little odd and will check that it's the correct behavior but
this fixes bugs in scroll(). To see a case that used to produce drawing
errors check out the collidingmouse example and drag the viewport
around.
Reviewed-by: Jervey Kong <jervey.kong@nokia.com>
-rw-r--r-- | src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp index 4cebc96..19103cb 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp @@ -274,6 +274,8 @@ static inline void scrollSurface(IDirectFBSurface *surface, const QRect &r, int { const DFBRectangle rect = { r.x(), r.y(), r.width(), r.height() }; surface->Blit(surface, surface, &rect, r.x() + dx, r.y() + dy); + const DFBRegion region = { rect.x + dx, rect.y + dy, r.right() + dx, r.bottom() + dy }; + surface->Flip(surface, ®ion, DSFLIP_BLIT); } bool QDirectFBWindowSurface::scroll(const QRegion ®ion, int dx, int dy) |