http://bugs.winehq.org/show_bug.cgi?id=7909 ------- Additional Comments From focht(a)gmx.net 2007-12-04 07:54 ------- Hello, your observation is correct. I used ps 5.5 trial + latest wine snapshot. The following pseudo code snippet illustrates the lockup in photoshop (made up from disassembly): --- pseudo code --- bool some_app_class::waitMouseRButtonUp( int& x, int& y) { // right mouse button up ? if( ::GetAsyncKeyState( ::GetSystemMetrics(SM_SWAPBUTTON) ? VK_LBUTTON : VK_RBUTTON) & 0x8000) == 0x8000) { // right mouse button still down, wait until up while( ::GetAsyncKeyState( ::GetSystemMetrics(SM_SWAPBUTTON) ? VK_LBUTTON : VK_RBUTTON) & 0x8000) == 0x8000); } if ( m_hwnd != 0) { MSG msg; if( !::PeekMessage (&msg, m_hwnd, WM_RBUTTONUP, WM_RBUTTONUP, PM_REMOVE)) return false; POINT pt = { GET_X_LPARAM( msg.lParam), GET_Y_LPARAM( msg.lParam) }; ::ClientToScreen( m_hwnd, &pt); x = pt.x; y = pt.y; } return true; } --- pseudo code --- Running "WINEDEBUG=+key,+msg" shows following sequence: --- trace --- trace:msg:WINPROC_CallProcWtoA (hwnd=0x20196,msg=WM_SETCURSOR,wp=00020196,lp=02040001) trace:msg:WINPROC_CallProcWtoA (hwnd=0x4002e,msg=WM_SETCURSOR,wp=00020196,lp=02040001) trace:msg:WINPROC_CallProcWtoA (hwnd=0x10026,msg=WM_SETCURSOR,wp=00020196,lp=02040001) trace:msg:WINPROC_CallProcWtoA (hwnd=0x10024,msg=WM_SETCURSOR,wp=00020196,lp=02040001) trace:key:X11DRV_GetAsyncKeyState (2) -> ffff8001 trace:key:X11DRV_GetAsyncKeyState (10) -> 0 trace:key:X11DRV_GetAsyncKeyState (12) -> 0 trace:key:X11DRV_GetAsyncKeyState (11) -> 0 trace:msg:WINPROC_CallProcWtoA (hwnd=0x20196,msg=WM_NCHITTEST,wp=00000000,lp=00a3011a) trace:key:X11DRV_GetAsyncKeyState (20) -> 0 trace:key:X11DRV_GetAsyncKeyState (10) -> 0 trace:key:X11DRV_GetAsyncKeyState (20) -> 0 trace:key:X11DRV_GetAsyncKeyState (12) -> 0 trace:key:X11DRV_GetAsyncKeyState (11) -> 0 trace:key:X11DRV_GetAsyncKeyState (2e) -> 0 trace:key:X11DRV_GetAsyncKeyState (8) -> 0 trace:key:X11DRV_GetAsyncKeyState (1b) -> 0 trace:key:X11DRV_GetAsyncKeyState (10) -> 0 trace:key:X11DRV_GetAsyncKeyState (12) -> 0 trace:key:X11DRV_GetAsyncKeyState (11) -> 0 trace:msg:WINPROC_CallProcWtoA (hwnd=0x20196,msg=WM_NCHITTEST,wp=00000000,lp=00a3011a) trace:key:X11DRV_GetAsyncKeyState (20) -> 0 trace:key:X11DRV_GetAsyncKeyState (12) -> 0 trace:key:X11DRV_GetAsyncKeyState (2) -> ffff8000 trace:key:X11DRV_GetAsyncKeyState (2) -> ffff8000 .... <continues endlessly> --- trace --- The rbutton up event shows up first (trace:key:X11DRV_GetAsyncKeyState (2) -> ffff8001), No previous rbutton down event is seen. The offending code in photoshop is executed after seeing second WM_NCHITTEST message. Due to "trace:key:X11DRV_GetAsyncKeyState (2)" returning "rbutton down" state all the time, it loops forever (see "while" loop in code). Maybe some kind of race condition or missed mouse event/update (X11DRV_MsgWaitForMultipleObjectsEx)... Sidenote: While debugging/killing the hanging app, wine x11 subsystem killed my window borders (decorator/compiz) several times. Regards -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.