Hi all,
since a couple of weeks all wine GUI applications are missing the window manager decorations on my Debian Etch box with the Compiz window manager. I did'nt get to doing a bisect until today. The problematic patch seems to be:
--- commit ac98e0c07535af4a373c0af343498903e2ff42a6 Author: Alexandre Julliard [email protected] Date: Mon Aug 20 22:06:33 2007 +0200
winex11: Switch windows to managed mode in SetWindowPos instead of at creation time. ---
Anybody else seeing this problem?
I'll attach a +x11drv log from starting up notepad with a current version of wine as of today (wine-0.9.44-g282696b).
Bye, -- Michael Jung [email protected]
libGL warning: 3D driver claims to not support visual 0x4b trace:x11drv:xinerama_init monitor 0x1: (0,0)-(1024,768) (primary) trace:x11drv:xinerama_init virtual size: (0,0)-(1024,768) primary size: 1024x768 trace:x11drv:X11DRV_SetupXIM X display of IM = 0x7c1a3f38 trace:x11drv:X11DRV_SetupXIM Using en_US.UTF-8 locale of Input Method trace:x11drv:X11DRV_SetupXIM ximStyles->count_styles = 2 trace:x11drv:X11DRV_SetupXIM ximStyles[0] = XIMPreeditNone trace:x11drv:X11DRV_SetupXIM ximStyles[1] = XIMPreeditNothing trace:x11drv:X11DRV_SetupXIM Setting Style: ximStyleRoot = STYLE_ROOT trace:x11drv:X11DRV_SetupXIM No callback style avalable trace:x11drv:X11DRV_CreateBitmap (0x1a4) 32x32 1 bpp trace:x11drv:X11DRV_CreateBitmap (0x1a8) 32x32 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1a8, buffer=0x38065c, count=0x80) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1a4, buffer=0x3806dc, count=0x80) trace:x11drv:X11DRV_CreateBitmap (0x1ac) 32x32 1 bpp trace:x11drv:X11DRV_CreateBitmap (0x1b0) 32x32 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1b0, buffer=0x380784, count=0x80) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1ac, buffer=0x380804, count=0x80) trace:x11drv:X11DRV_CreateBitmap (0x1c0) 16x16 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x1c4) 16x16 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1c4, buffer=0x3808ac, count=0x20) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1c0, buffer=0x3808cc, count=0x300) trace:x11drv:X11DRV_CreateBitmap (0x1c8) 16x16 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x1cc) 16x16 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1cc, buffer=0x380bf4, count=0x20) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1c8, buffer=0x380c14, count=0x300) trace:x11drv:X11DRV_CreateBitmap (0x1d0) 16x16 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x1d4) 16x16 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1d4, buffer=0x380f3c, count=0x20) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1d0, buffer=0x380f5c, count=0x300) trace:x11drv:X11DRV_CreateBitmap (0x210) 64x16 1 bpp trace:x11drv:X11DRV_CreateBitmap (0x248) 128x32 1 bpp trace:x11drv:X11DRV_CreateBitmap (0x264) 16x16 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x268) 16x16 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x268, buffer=0x381284, count=0x20) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x264, buffer=0x3812a4, count=0x300) trace:x11drv:X11DRV_CreateBitmap (0x26c) 32x32 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x270) 32x32 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x270, buffer=0x3815cc, count=0x80) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x26c, buffer=0x38164c, count=0xc00) trace:x11drv:X11DRV_CreateBitmap (0x274) 16x16 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x278) 16x16 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x278, buffer=0x382274, count=0x20) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x274, buffer=0x382294, count=0x300) trace:x11drv:X11DRV_CreateBitmap (0x27c) 16x16 24 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x27c, bits=0x121308, count=0x300) trace:x11drv:X11DRV_CreateBitmap (0x280) 16x16 1 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x280, bits=0x120ff0, count=0x20) trace:x11drv:X11DRV_CreateBitmap (0x290) 32x32 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x294) 32x32 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x294, buffer=0x382274, count=0x80) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x290, buffer=0x3822f4, count=0xc00) trace:x11drv:X11DRV_CreateBitmap (0x298) 32x32 24 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x298, bits=0x121308, count=0xc00) trace:x11drv:X11DRV_CreateBitmap (0x29c) 32x32 1 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x29c, bits=0x121f10, count=0x80) trace:x11drv:X11DRV_CreateBitmap (0x2ac) 16x16 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x2b0) 16x16 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x2b0, buffer=0x382274, count=0x20) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x2ac, buffer=0x382294, count=0x300) trace:x11drv:X11DRV_CreateBitmap (0x2cc) 64x144 1 bpp trace:x11drv:X11DRV_CreateBitmap (0x2b4) 16x16 24 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x2b4, bits=0x121308, count=0x300) trace:x11drv:X11DRV_CreateBitmap (0x2b8) 16x16 1 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x2b8, bits=0x121660, count=0x20) trace:x11drv:X11DRV_CreateBitmap (0x2dc) 32x32 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x2e0) 32x32 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x2e0, buffer=0x382274, count=0x80) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x2dc, buffer=0x3822f4, count=0xc00) trace:x11drv:X11DRV_CreateBitmap (0x2fc) 128x288 1 bpp trace:x11drv:X11DRV_CreateBitmap (0x2e4) 32x32 24 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x2e4, bits=0x121ad0, count=0xc00) trace:x11drv:X11DRV_CreateBitmap (0x2e8) 32x32 1 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x2e8, bits=0x120378, count=0x80) trace:x11drv:X11DRV_CreateBitmap (0x30c) 32x32 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x310) 32x32 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x310, buffer=0x382274, count=0x80) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x30c, buffer=0x3822f4, count=0xc00) libGL warning: 3D driver claims to not support visual 0x4b trace:x11drv:xinerama_init monitor 0x1: (0,0)-(1024,768) (primary) trace:x11drv:xinerama_init virtual size: (0,0)-(1024,768) primary size: 1024x768 trace:x11drv:X11DRV_SetupXIM X display of IM = 0x7c06e720 trace:x11drv:X11DRV_SetupXIM Using en_US.UTF-8 locale of Input Method trace:x11drv:X11DRV_SetupXIM ximStyles->count_styles = 2 trace:x11drv:X11DRV_SetupXIM ximStyles[0] = XIMPreeditNone trace:x11drv:X11DRV_SetupXIM ximStyles[1] = XIMPreeditNothing trace:x11drv:X11DRV_SetupXIM Setting Style: ximStyleRoot = STYLE_ROOT trace:x11drv:X11DRV_SetupXIM No callback style avalable trace:x11drv:X11DRV_CreateBitmap (0x1a4) 32x32 1 bpp trace:x11drv:X11DRV_CreateBitmap (0x1a8) 32x32 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1a8, buffer=0x39065c, count=0x80) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1a4, buffer=0x3906dc, count=0x80) trace:x11drv:X11DRV_CreateBitmap (0x1ac) 32x32 1 bpp trace:x11drv:X11DRV_CreateBitmap (0x1b0) 32x32 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1b0, buffer=0x390784, count=0x80) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1ac, buffer=0x390804, count=0x80) trace:x11drv:X11DRV_SetWindowPos win 0x10020 window (0,0)-(1024,768) client (0,0)-(1024,768) style 86000000 trace:x11drv:X11DRV_CreateWindow hwnd 0x10020 cs 0,0 1024x768 trace:x11drv:X11DRV_CreateWindow win 0x10020 window 0,0,1024,768 client 0,0,1024,768 whole 0,0,1024,768 X client 0,0,1024,768 xwin 4d trace:x11drv:X11DRV_ShowWindow hwnd=0x10020, cmd=5, wasVisible 0 trace:x11drv:X11DRV_CreateBitmap (0x1d4) 32x32 24 bpp trace:x11drv:X11DRV_CreateBitmap (0x1d8) 32x32 1 bpp trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1d8, buffer=0x3908ac, count=0x80) trace:x11drv:X11DRV_GetBitmapBits (bmp=0x1d4, buffer=0x39092c, count=0xc00) trace:x11drv:X11DRV_SetWindowPos win 0x10022 window (0,0)-(0,0) client (0,0)-(0,0) style 04c00000 trace:x11drv:X11DRV_SetWindowPos making win 0x10022/4000001 managed trace:x11drv:X11DRV_SetWindowPos win 0x10022 window (0,0)-(0,0) client (0,0)-(0,0) style 04c00000 trace:x11drv:X11DRV_CreateWindow hwnd 0x10022 cs 0,0 0x0 trace:x11drv:X11DRV_SetWindowPos win 0x10022 window (0,0)-(0,0) client (3,22)-(3,22) style 04c00000 trace:x11drv:X11DRV_sync_window_position setting win 4000001 pos 0,0,0x0 after 7ecb8ec0 changes=40 trace:x11drv:X11DRV_CreateWindow win 0x10022 window 0,0,0,0 client 3,22,3,22 whole 0,0,0,0 X client 3,22,3,22 xwin 4000001 trace:x11drv:X11DRV_SetWindowPos win 0x10024 window (153,75)-(861,599) client (153,75)-(861,599) style 04cf0000 trace:x11drv:X11DRV_SetWindowPos making win 0x10024/3c00001 managed trace:x11drv:X11DRV_SetWindowPos win 0x10024 window (153,75)-(861,599) client (153,75)-(861,599) style 04cf0000 trace:x11drv:X11DRV_sync_window_position setting win 3c00001 pos 157,98,700x497 after 4 changes=f trace:x11drv:X11DRV_CreateWindow hwnd 0x10024 cs 153,75 708x524 trace:x11drv:X11DRV_CreateBitmap (0x33c) 7x11 1 bpp trace:x11drv:X11DRV_CreateBitmap (0x34c) 7x11 1 bpp trace:x11drv:X11DRV_SetWindowPos win 0x10024 window (153,75)-(861,599) client (157,117)-(857,595) style 04cf0000 trace:x11drv:X11DRV_sync_window_position setting win 3c00001 pos 157,98,700x497 after 4 changes=40 trace:x11drv:X11DRV_CreateWindow win 0x10024 window 153,75,861,599 client 157,117,857,595 whole 157,98,857,595 X client 0,19,700,497 xwin 3c00001 trace:x11drv:X11DRV_SetWindowPos win 0x10026 window (0,0)-(700,478) client (0,0)-(700,478) style 40a00144 trace:x11drv:X11DRV_CreateWindow hwnd 0x10026 cs 0,0 700x478 trace:x11drv:X11DRV_SetWindowPos win 0x10026 window (0,0)-(700,478) client (3,3)-(681,475) style 40a00144 trace:x11drv:X11DRV_CreateWindow win 0x10026 window 0,0,700,478 client 3,3,681,475 whole 0,0,700,478 X client 3,3,681,475 xwin 0 trace:x11drv:X11DRV_ShowWindow hwnd=0x10026, cmd=5, wasVisible 0 trace:x11drv:X11DRV_CreateBitmap (0x404) 2x13 1 bpp trace:x11drv:X11DRV_ShowWindow hwnd=0x10024, cmd=1, wasVisible 0 trace:x11drv:X11DRV_SetWindowPos win 0x10024 window (153,75)-(861,599) client (157,117)-(857,595) style 14cf0000 trace:x11drv:X11DRV_sync_window_position setting win 3c00001 pos 157,98,700x497 after 359 changes=40 trace:x11drv:X11DRV_SetWindowPos mapping win 0x10024 trace:x11drv:X11DRV_CreateBitmap (0x420) 32x32 1 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x420, bits=0x1266f0, count=0x80) trace:x11drv:X11DRV_CreateBitmap (0x41c) 32x32 24 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x41c, bits=0x1269e8, count=0xc00) trace:x11drv:update_fullscreen_state setting fullscreen state for window 3c00001 to false trace:x11drv:X11DRV_SetWindowPos win 0x10026 window (0,0)-(700,478) client (3,3)-(681,475) style 50a00144 trace:x11drv:X11DRV_Expose win 0x10024 (3c00001) 0,0 700x497 trace:x11drv:X11DRV_CreateBitmap (0x194) 8x8 1 bpp trace:x11drv:X11DRV_SetBitmapBits (bmp=0x194, bits=0x1189a0, count=0x10) trace:x11drv:X11DRV_SetWindowPos win 0x10024 window (153,75)-(861,599) client (157,117)-(857,595) style 04cf0000 trace:x11drv:X11DRV_SetWindowPos unmapping win 0x10024 trace:x11drv:destroy_whole_window win 0x10024 xwin 3c00001
2007/9/1, Michael Jung [email protected]:
Hi all,
since a couple of weeks all wine GUI applications are missing the window manager decorations on my Debian Etch box with the Compiz window manager. I did'nt get to doing a bisect until today. The problematic patch seems to be:
Compiz is a broken window manager, bug is in compiz not wine. If you would read the FAQ you would have known that!
Maarten
On Saturday September 1 2007 16:35, Michael Jung wrote:
Hi all,
since a couple of weeks all wine GUI applications are missing the window manager decorations on my Debian Etch box with the Compiz window manager.
Have you tried to report this bug to Compiz developers? It really seems that this is Compiz bug because the patch you are talking about cannot have such side-effects. So I think you should report this to Compiz bugzilla.
Hi,
L. Rahyen wrote:
On Saturday September 1 2007 16:35, Michael Jung wrote:
Hi all,
since a couple of weeks all wine GUI applications are missing the window manager decorations on my Debian Etch box with the Compiz window manager.
Have you tried to report this bug to Compiz developers? It really seems that this is Compiz bug because the patch you are talking about cannot have such side-effects. So I think you should report this to Compiz bugzilla.
Yes, that's probably the right way to attack this problem. However, I'm going to investigate this a little further beforehand. Would like to figure out what this patch has changed with regard to informing the window manager that a window should have decorations.
Thanks, -- Michael Jung [email protected]
Michael Jung wrote:
since a couple of weeks all wine GUI applications are missing the window manager decorations on my Debian Etch box with the Compiz window manager. I did'nt get to doing a bisect until today. The problematic patch seems to be:
commit ac98e0c07535af4a373c0af343498903e2ff42a6 Author: Alexandre Julliard [email protected] Date: Mon Aug 20 22:06:33 2007 +0200
winex11: Switch windows to managed mode in SetWindowPos instead of
at creation time.
It seems that the added "data->whole_window" check in the expression used to decide if a window has to be switched to managed mode causes this problem for me.
data->whole_window is set in create_whole_window at window.c:1002 create_whole_window is called from X11DRV_CreateWindow at window.c:1292
data->whole_window is tested in X11DRV_SetWindowPos at winpos.c:251 X11DRV_SetWindowPos is called form X11DRV_CreateWindow at window.c:1287
Thus, it seems to me that this check happens before "data->whole_window" is initialized. Removing this check (as in the attached patch) resolves the issue for me. But this does not seem to be the correct solution, since the root desktop window is now flagged as "managed", which does not have any impact (at least for me), but which seem logically incorrect.
Thanks, -- Michael Jung [email protected]
From ebd940b415d69270aa6b2408688560dd915ec9bb Mon Sep 17 00:00:00 2001
From: Michael Jung <mjung@denkbrett.(none)> Date: Thu, 4 Oct 2007 16:44:53 +0200 Subject: [PATCH] Do not test uninitialized data->whole_window in X11DRV_SetWindowPos
--- dlls/winex11.drv/winpos.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/dlls/winex11.drv/winpos.c b/dlls/winex11.drv/winpos.c index 1e7da13..b9db494 100644 --- a/dlls/winex11.drv/winpos.c +++ b/dlls/winex11.drv/winpos.c @@ -248,7 +248,7 @@ BOOL X11DRV_SetWindowPos( HWND hwnd, HWND insert_after, const RECT *rectWindow, if (!(data = X11DRV_get_win_data( hwnd ))) return FALSE;
/* check if we need to switch the window to managed */ - if (!data->managed && data->whole_window && managed_mode && + if (!data->managed && managed_mode && root_window == DefaultRootWindow( display ) && data->whole_window != root_window) {
Michael Jung [email protected] writes:
It seems that the added "data->whole_window" check in the expression used to decide if a window has to be switched to managed mode causes this problem for me.
data->whole_window is set in create_whole_window at window.c:1002 create_whole_window is called from X11DRV_CreateWindow at window.c:1292
data->whole_window is tested in X11DRV_SetWindowPos at winpos.c:251 X11DRV_SetWindowPos is called form X11DRV_CreateWindow at window.c:1287
Thus, it seems to me that this check happens before "data->whole_window" is initialized. Removing this check (as in the attached patch) resolves the issue for me. But this does not seem to be the correct solution, since the root desktop window is now flagged as "managed", which does not have any impact (at least for me), but which seem logically incorrect.
That's just hiding the problem. If the window manager doesn't reevaluate the wm hints when the window is mapped, many things won't work. That's really a Compiz bug IMO.
Compiz has made a workaround available in git for this issue.
http://gitweb.opencompositing.org/?p=fusion/plugins/workarounds;a=commit;h=d...
On 10/9/07, Alexandre Julliard [email protected] wrote:
Michael Jung [email protected] writes:
It seems that the added "data->whole_window" check in the expression used to decide if a window has to be switched to managed mode causes this problem for me.
data->whole_window is set in create_whole_window at window.c:1002 create_whole_window is called from X11DRV_CreateWindow at window.c:1292
data->whole_window is tested in X11DRV_SetWindowPos at winpos.c:251 X11DRV_SetWindowPos is called form X11DRV_CreateWindow at window.c:1287
Thus, it seems to me that this check happens before "data->whole_window" is initialized. Removing this check (as in the attached patch) resolves the issue for me. But this does not seem to be the correct solution, since the root desktop window is now flagged as "managed", which does not have any impact (at least for me), but which seem logically incorrect.
That's just hiding the problem. If the window manager doesn't reevaluate the wm hints when the window is mapped, many things won't work. That's really a Compiz bug IMO.
-- Alexandre Julliard [email protected]
Hi,
On Wed, 10 Oct 2007, King InuYasha wrote:
Compiz has made a workaround available in git for this issue.
http://gitweb.opencompositing.org/?p=fusion/plugins/workarounds;a=commit;h=d...
Nice, thanks. Are you aware of any discussion thread on a mailing list or somesuch w.r.t. this problem? Google didn't help.
Thanks, -- Michael Jung [email protected]