http://bugs.winehq.org/show_bug.cgi?id=30814
Bug #: 30814 Summary: Age of Empires II scrolling gets stuck after Alt-Tab away and back Product: Wine Version: 1.5.5 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: nemesis@icequake.net Classification: Unclassified
Wine 1.2 did not have this problem but was much slower. Wine 1.5.5 is much faster and just a much better overall experience with this one caveat.
If you start a game and immediately alt-tab away and back, nothing is amiss. You can even click on some things onscreen and there is no problem.
However, once you have scrolled the screen either by moving the mouse towards the edges, or by using the arrow keys on the keyboard, if you alt-tab away and back, upon returning the screen will immediately begin to scroll in an apparently random direction and cannot be stopped.
I did the WINEDEBUG="+cursor,+dinput,+ddraw" winedbg Age2_x1/age2_x1.exe and did not come up with anything obviously wrong while the problem was occurring. A lot of this kind of stuff:
trace:ddraw:surface_lock locked surface returning description : trace:ddraw:DDRAW_dump_members - DDSD_CAPS : DDSCAPS_OFFSCREENPLAIN DDSCAPS_VIDEOMEMORY DDSCAPS_LOCALVIDMEM trace:ddraw:DDRAW_dump_members - DDSD_HEIGHT : 768 trace:ddraw:DDRAW_dump_members - DDSD_WIDTH : 1024 trace:ddraw:DDRAW_dump_members - DDSD_PITCH : 1024 trace:ddraw:DDRAW_dump_members - DDSD_PIXELFORMAT : ( DDPF_PALETTEINDEXED8 DDPF_RGB , RGB bits: 8, R 00 G 00 B 00) trace:ddraw:ddraw_surface1_Unlock iface 0xa2f01a8, data 0xbf44020. trace:ddraw:ddraw_surface7_Unlock iface 0xa2f0198, rect (null). trace:cursor:X11DRV_GetCursorPos pointer at (885,649) server pos 885,649 trace:cursor:SetCursor (nil) trace:ddraw:ddraw_surface1_Blt iface 0xa303ef8, dst_rect (0,0)-(24,32), src_surface 0xa2f01a8, src_rect (885,649)-(909,681), flags 0x1000000, fx (nil). trace:ddraw:ddraw_surface7_Blt iface 0xa303ee8, dst_rect (0,0)-(24,32), src_surface 0xa2f0198, src_rect (885,649)-(909,681), flags 0x1000000, fx (nil). trace:ddraw:ddraw_surface1_GetClipper iface 0xa2f01a8, clipper 0x33c81c. trace:ddraw:ddraw_surface7_GetClipper iface 0xa2f0198, clipper 0x33c81c. trace:ddraw:ddraw_surface1_SetColorKey iface 0xa305188, flags 0x8, color_key 0x33c7f8. trace:ddraw:ddraw_surface7_SetColorKey iface 0xa305178, flags 0x8, color_key 0x33c7f8. trace:ddraw:ddraw_surface7_EnumAttachedSurfaces iface 0xa305178, context 0x33c7b8, callback 0x7e72abb0. trace:ddraw:ddraw_surface7_EnumAttachedSurfaces end of enumeration. trace:ddraw:ddraw_surface1_BltFast iface 0xa2f01a8, dst_x 885, dst_y 649, src_surface 0xa305188, src_rect (0,0)-(24,32), flags 0x11. trace:ddraw:ddraw_surface7_BltFast iface 0xa2f0198, dst_x 885, dst_y 649, src_surface 0xa305178, src_rect (0,0)-(24,32), flags 0x11. trace:ddraw:ddraw_surface1_Blt iface 0xa4777f0, dst_rect (0,0)-(1024,768), src_surface 0xa2f01a8, src_rect (0,0)-(1024,768), flags 0x1000000, fx (nil). trace:ddraw:ddraw_surface7_Blt iface 0xa4777e0, dst_rect (0,0)-(1024,768), src_surface 0xa2f0198, src_rect (0,0)-(1024,768), flags 0x1000000, fx (nil). trace:ddraw:ddraw_clipper_GetClipList iface 0x151748, rect (0,0)-(1024,768), clip_list (nil), clip_list_size 0x33c7b8. trace:ddraw:ddraw_clipper_GetClipList iface 0x151748, rect (0,0)-(1024,768), clip_list 0xa52ab90, clip_list_size 0x33c7b8. trace:ddraw:ddraw_palette_SetEntries iface 0x143150, flags 0, start 0, count 256, entries 0x9192a0. trace:cursor:X11DRV_GetCursorPos pointer at (885,649) server pos 885,649 trace:cursor:X11DRV_GetCursorPos pointer at (885,649) server pos 885,649 trace:cursor:X11DRV_GetCursorPos pointer at (885,649) server pos 885,649 trace:cursor:X11DRV_GetCursorPos pointer at (885,649) server pos 885,649 trace:cursor:X11DRV_GetCursorPos pointer at (885,649) server pos 885,649 trace:cursor:X11DRV_GetCursorPos pointer at (885,649) server pos 885,649
Let me know what I can do to help debug.