diff options
author | Anders Bakken <anders.bakken@nokia.com> | 2010-02-19 09:16:22 (GMT) |
---|---|---|
committer | Anders Bakken <anders.bakken@nokia.com> | 2010-02-24 22:16:59 (GMT) |
commit | bc773d465d57e20b96f9c6f55397d4014e07bc24 (patch) | |
tree | 1ddb00f3a339e60392f8dee5b13d17887c27a491 /src/plugins/gfxdrivers | |
parent | 5e119ec1e765f1f33430632ed245242cdc9d37f1 (diff) | |
download | Qt-bc773d465d57e20b96f9c6f55397d4014e07bc24.zip Qt-bc773d465d57e20b96f9c6f55397d4014e07bc24.tar.gz Qt-bc773d465d57e20b96f9c6f55397d4014e07bc24.tar.bz2 |
Support for disabling partial flips in dfb
Certain boards do not properly support IDirectFBSurface->Flip() with a
partial DFBRegion passed in.
This problem can be worked around by exporting:
QWS_DISPLAY=directfb:nopartialflip
Reviewed-by: Jervey Kong <jervey.kong@nokia.com>
Diffstat (limited to 'src/plugins/gfxdrivers')
-rw-r--r-- | src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp | 4 | ||||
-rw-r--r-- | src/plugins/gfxdrivers/directfb/qdirectfbscreen.h | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp index b447967..8f37bcf 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp @@ -1126,6 +1126,8 @@ bool QDirectFBScreen::connect(const QString &displaySpec) if (displayArgs.contains(QLatin1String("boundingrectflip"), Qt::CaseInsensitive)) { d_ptr->directFBFlags |= BoundingRectFlip; + } else if (displayArgs.contains(QLatin1String("nopartialflip"), Qt::CaseInsensitive)) { + d_ptr->directFBFlags |= NoPartialFlip; } #ifdef QT_DIRECTFB_IMAGECACHE @@ -1691,7 +1693,7 @@ uchar *QDirectFBScreen::lockSurface(IDirectFBSurface *surface, DFBSurfaceLockFla void QDirectFBScreen::flipSurface(IDirectFBSurface *surface, DFBSurfaceFlipFlags flipFlags, const QRegion ®ion, const QPoint &offset) { - if (!(flipFlags & DSFLIP_BLIT)) { + if (!(flipFlags & DSFLIP_BLIT) || d_ptr->directFBFlags & NoPartialFlip) { surface->Flip(surface, 0, flipFlags); } else { if (!(d_ptr->directFBFlags & BoundingRectFlip) && region.rectCount() > 1) { diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h index a8c4b43..c483020 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h @@ -144,7 +144,8 @@ public: NoFlags = 0x00, VideoOnly = 0x01, SystemOnly = 0x02, - BoundingRectFlip = 0x04 + BoundingRectFlip = 0x04, + NoPartialFlip = 0x08 }; Q_DECLARE_FLAGS(DirectFBFlags, DirectFBFlag); |