diff -r 56cd8111b7f7 -r 41300fa6a67c src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp --- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp Tue Jan 26 12:42:25 2010 +0200 +++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp Tue Feb 02 00:43:10 2010 +0200 @@ -128,7 +128,6 @@ return (dfbWindow ? dfbWindow : (sibling ? sibling->dfbWindow : 0)); } - void QDirectFBWindowSurface::createWindow(const QRect &rect) { IDirectFBDisplayLayer *layer = screen->dfbDisplayLayer(); @@ -138,7 +137,7 @@ DFBWindowDescription description; memset(&description, 0, sizeof(DFBWindowDescription)); - description.caps = DWCAPS_NODECORATION|DWCAPS_DOUBLEBUFFER; + description.caps = DWCAPS_NODECORATION; description.flags = DWDESC_CAPS|DWDESC_SURFACE_CAPS|DWDESC_PIXELFORMAT|DWDESC_HEIGHT|DWDESC_WIDTH|DWDESC_POSX|DWDESC_POSY; #if (Q_DIRECTFB_VERSION >= 0x010200) description.flags |= DWDESC_OPTIONS; @@ -169,6 +168,9 @@ DirectFBErrorFatal("QDirectFBWindowSurface::createWindow", result); if (window()) { + if (window()->windowFlags() & Qt::WindowStaysOnTopHint) { + dfbWindow->SetStackingClass(dfbWindow, DWSC_UPPER); + } DFBWindowID winid; result = dfbWindow->GetID(dfbWindow, &winid); if (result != DFB_OK) { @@ -311,7 +313,7 @@ if (!dfbSurface || !(flipFlags & DSFLIP_BLIT) || region.isEmpty()) return false; dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX); - if (region.numRects() == 1) { + if (region.rectCount() == 1) { scrollSurface(dfbSurface, region.boundingRect(), dx, dy); } else { const QVector rects = region.rects();