Marcus Meissner wrote:
Hi,
While debugging Google Earth I see hangs in FindWindow...
Apparently the if (GetWindowTextW( list[i], buffer, len + 1 ) && !strcmpiW( buffer, title )) break; call hangs on the server... But how is this possible?
+win,+server snippet:
trace:win:RedrawWindow 0x10020 whole window flags: RDW_INVALIDATE RDW_ERASE 0009: redraw_window( window=0x10020, flags=00000005, region={} ) 0009: redraw_window() = 0 trace:win:RedrawWindow 0x10020 whole window flags: RDW_INVALIDATE RDW_ERASE 0009: redraw_window( window=0x10020, flags=00000005, region={} ) 0009: redraw_window() = 0 0009: get_window_children( parent=0x10020, atom=0000, tid=0000 ) 0009: get_window_children() = 0 { count=3, children={0x10026,0x10024,0x10022} } fixme:win:WIN_FindWindow before getwindowtext fixme:win:WIN_FindWindow after getwindowtext fixme:win:WIN_FindWindow before getwindowtext 0009: send_message( id=0010, type=1, flags=0, win=0x10024, msg=0000000d, wparam=00000023, lparam=55937970, x=0, y=0, time=000010a4, info=00 000000, timeout=0, callback=(nil), data={} ) 0009: send_message() = 0 0009: get_msg_queue( ) 0009: get_msg_queue() = 0 { handle=0x148 } 0009: set_queue_mask( wake_mask=00008040, changed_mask=00008040, skip_wait=1 ) 0009: set_queue_mask() = 0 { wake_bits=00000000, changed_bits=00000000 } 0009: select( flags=4, cookie=0x55c1f6f8, signal=(nil), timeout=0, handles={0x148,0x80} ) 0009: select() = PENDING *hang*
What debug to enable and what to look at?
Look at why the message loop for 0x10024 doesn't process the message. This may be one of the things that Windows handles in the server rather than sending messages to each window.
Rob