From 9cfeb5b88c74581fd9258deca5a5b398b10bb286 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Wed, 10 Mar 1999 13:26:09 +0000 Subject: [PATCH] Avoid unnecessary GraphicsExpose events. --- graphics/x11drv/bitblt.c | 11 +++++++---- graphics/x11drv/bitmap.c | 1 + windows/x11drv/event.c | 8 ++++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/graphics/x11drv/bitblt.c b/graphics/x11drv/bitblt.c index 4b1be45a564..1ce1a0a5fd1 100644 --- a/graphics/x11drv/bitblt.c +++ b/graphics/x11drv/bitblt.c @@ -1242,27 +1242,29 @@ static BOOL BITBLT_InternalStretchBlt( DC *dcDst, INT xDst, INT yDst, case SRCCOPY: /* 0xcc */ if (dcSrc->w.bitsPerPixel == dcDst->w.bitsPerPixel) { - XSetGraphicsExposures( display, physDevDst->gc, True ); + BOOL expose = !(dcSrc->w.flags & DC_MEMORY) && !(dcDst->w.flags & DC_MEMORY); + if ( expose ) XSetGraphicsExposures( display, physDevDst->gc, True ); XSetFunction( display, physDevDst->gc, GXcopy ); XCopyArea( display, physDevSrc->drawable, physDevDst->drawable, physDevDst->gc, visRectSrc.left, visRectSrc.top, width, height, visRectDst.left, visRectDst.top ); - XSetGraphicsExposures( display, physDevDst->gc, False ); + if ( expose ) XSetGraphicsExposures( display, physDevDst->gc, False ); return TRUE; } if (dcSrc->w.bitsPerPixel == 1) { + BOOL expose = !(dcSrc->w.flags & DC_MEMORY) && !(dcDst->w.flags & DC_MEMORY); XSetBackground( display, physDevDst->gc, physDevDst->textPixel ); XSetForeground( display, physDevDst->gc, physDevDst->backgroundPixel ); XSetFunction( display, physDevDst->gc, GXcopy ); - XSetGraphicsExposures( display, physDevDst->gc, True ); + if ( expose ) XSetGraphicsExposures( display, physDevDst->gc, True ); XCopyPlane( display, physDevSrc->drawable, physDevDst->drawable, physDevDst->gc, visRectSrc.left, visRectSrc.top, width, height, visRectDst.left, visRectDst.top, 1 ); - XSetGraphicsExposures( display, physDevDst->gc, False ); + if ( expose ) XSetGraphicsExposures( display, physDevDst->gc, False ); return TRUE; } break; @@ -1290,6 +1292,7 @@ static BOOL BITBLT_InternalStretchBlt( DC *dcDst, INT xDst, INT yDst, } tmpGC = XCreateGC( display, physDevDst->drawable, 0, NULL ); + XSetGraphicsExposures( display, tmpGC, False ); pixmaps[DST] = XCreatePixmap( display, X11DRV_GetXRootWindow(), width, height, dcDst->w.bitsPerPixel ); if (useSrc) diff --git a/graphics/x11drv/bitmap.c b/graphics/x11drv/bitmap.c index de17e60dcb9..c5323b8301e 100644 --- a/graphics/x11drv/bitmap.c +++ b/graphics/x11drv/bitmap.c @@ -112,6 +112,7 @@ HBITMAP X11DRV_BITMAP_SelectObject( DC * dc, HBITMAP hbitmap, { TSXFreeGC( display, physDev->gc ); physDev->gc = TSXCreateGC( display, physDev->drawable, 0, NULL ); + TSXSetGraphicsExposures( display, physDev->gc, False ); dc->w.bitsPerPixel = bmp->bitmap.bmBitsPixel; DC_InitDC( dc ); } diff --git a/windows/x11drv/event.c b/windows/x11drv/event.c index 7d41561d9df..db5e7e9a4a4 100644 --- a/windows/x11drv/event.c +++ b/windows/x11drv/event.c @@ -402,8 +402,12 @@ static void EVENT_ProcessEvent( XEvent *event ) } } - TRACE(event, "Got event %s for hwnd %04x\n", - event_names[event->type], pWnd? pWnd->hwndSelf : 0 ); + if ( !pWnd && event->xany.window != X11DRV_GetXRootWindow() ) + ERR( event, "Got event %s for unknown Window %08lx\n", + event_names[event->type], event->xany.window ); + else + TRACE( event, "Got event %s for hwnd %04x\n", + event_names[event->type], pWnd? pWnd->hwndSelf : 0 ); switch(event->type) {