[PATCH] winex11: Don't unmap the clip window more than once
Zebediah Figura
z.figura12 at gmail.com
Wed Mar 18 12:49:14 CDT 2020
On 3/18/20 11:24 AM, Myah Caron wrote:
> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48772
> Signed-off-by: Myah Caron <qsniyg at mail.com>
As stated in the bug, the specification says:
"If the window is already unmapped, this request has no effect."
In which case, isn't this a bug in the xorg server?
> ---
> dlls/winex11.drv/mouse.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
> index 7f0edd9be6..28c4296784 100644
> --- a/dlls/winex11.drv/mouse.c
> +++ b/dlls/winex11.drv/mouse.c
> @@ -129,6 +129,7 @@ static RECT last_clip_rect;
> static HWND last_clip_foreground_window;
> static BOOL last_clip_refused;
> static RECT clip_rect;
> +static BOOL clip_window_mapped = FALSE;
> static Cursor create_cursor( HANDLE handle );
>
> #ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
> @@ -426,6 +427,7 @@ static BOOL grab_clipping_window( const RECT *clip )
> XMoveResizeWindow( data->display, clip_window, pos.x, pos.y,
> max( 1, clip->right - clip->left ), max( 1, clip->bottom - clip->top ) );
> XMapWindow( data->display, clip_window );
> + clip_window_mapped = TRUE;
>
> /* if the rectangle is shrinking we may get a pointer warp */
> if (!data->clip_hwnd || clip->left > clip_rect.left || clip->top > clip_rect.top ||
> @@ -464,7 +466,8 @@ void ungrab_clipping_window(void)
> if (!clip_window) return;
>
> TRACE( "no longer clipping\n" );
> - XUnmapWindow( display, clip_window );
> + if (clip_window_mapped) XUnmapWindow( display, clip_window );
> + clip_window_mapped = FALSE;
> if (clipping_cursor) XUngrabPointer( display, CurrentTime );
> clipping_cursor = FALSE;
> SendMessageW( GetDesktopWindow(), WM_X11DRV_CLIP_CURSOR, 0, 0 );
> --
> 2.25.1
>
>
>
More information about the wine-devel
mailing list