summaryrefslogtreecommitdiff
path: root/hw/xwin/winmultiwindowwndproc.c
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@fairlite.demon.co.uk>2006-08-24 13:56:22 +0100
committerAlan Hourihane <alanh@fairlite.demon.co.uk>2006-08-24 13:56:22 +0100
commitce4a0a4ddafd3833d7025f83ed3729915c8aba70 (patch)
tree183138c749f73f97753c32987e6dca13009f778f /hw/xwin/winmultiwindowwndproc.c
parent67bd672c880869ef625ae0c0163c3ec1eba46abf (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.c20
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;