diff options
author | Alan Hourihane <alanh@fairlite.demon.co.uk> | 2006-08-24 13:56:22 +0100 |
---|---|---|
committer | Alan Hourihane <alanh@fairlite.demon.co.uk> | 2006-08-24 13:56:22 +0100 |
commit | ce4a0a4ddafd3833d7025f83ed3729915c8aba70 (patch) | |
tree | 183138c749f73f97753c32987e6dca13009f778f /hw/xwin/winmultiwindowwndproc.c | |
parent | 67bd672c880869ef625ae0c0163c3ec1eba46abf (diff) |
Apply patch in bug #7919, blit improvements in
multiwindow mode for Xming/CygwinX
Diffstat (limited to 'hw/xwin/winmultiwindowwndproc.c')
-rw-r--r-- | hw/xwin/winmultiwindowwndproc.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/hw/xwin/winmultiwindowwndproc.c b/hw/xwin/winmultiwindowwndproc.c index e35974468..0df896dd3 100644 --- a/hw/xwin/winmultiwindowwndproc.c +++ b/hw/xwin/winmultiwindowwndproc.c @@ -304,7 +304,6 @@ winTopLevelWindowProc (HWND hwnd, UINT message, winScreenInfo *s_pScreenInfo = NULL; HWND hwndScreen = NULL; DrawablePtr pDraw = NULL; - int iX, iY, iWidth, iHeight, iBorder; winWMMessageRec wmMsg; Bool fWMMsgInitialized = FALSE; static Bool s_fTracking = FALSE; @@ -442,20 +441,19 @@ winTopLevelWindowProc (HWND hwnd, UINT message, /* BeginPaint gives us an hdc that clips to the invalidated region */ hdcUpdate = BeginPaint (hwnd, &ps); - - /* Get the position and dimensions of the window */ - iBorder = wBorderWidth (pWin); - iX = pWin->drawable.x; - iY = pWin->drawable.y; - iWidth = pWin->drawable.width; - iHeight = pWin->drawable.height; + /* Avoid the BitBlt's if the PAINTSTRUCT is bogus */ + if (ps.rcPaint.right==0 && ps.rcPaint.bottom==0 && ps.rcPaint.left==0 && ps.rcPaint.top==0) + { + EndPaint (hwndScreen, &ps); + return 0; + } /* Try to copy from the shadow buffer */ if (!BitBlt (hdcUpdate, - 0, 0, - iWidth, iHeight, + ps.rcPaint.left, ps.rcPaint.top, + ps.rcPaint.right - ps.rcPaint.left, ps.rcPaint.bottom - ps.rcPaint.top, s_pScreenPriv->hdcShadow, - iX, iY, + ps.rcPaint.left + pWin->drawable.x, ps.rcPaint.top + pWin->drawable.y, SRCCOPY)) { LPVOID lpMsgBuf; |