[Bug 13683] Ultima IX: Mouse pointer missing when reading books, under inventory

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Feb 18 17:18:55 CST 2014


http://bugs.winehq.org/show_bug.cgi?id=13683

--- Comment #29 from Christopher Thielen <christopher at thielen.co> ---
I'm wondering if maybe the game is using the regular user32 cursor stuff.

Looking at the dumped resources, the game actually has dozens of different
bitmaps depending on what the cursor is "holding" (the missing cursor is shaped
like a hand that can drag items around).

I re-ran the WINEDEBUG output but added +timestamp to help make sense of some
of it. Here's what I found, searching for and excluding certain strings to
bring down the log noise:

(Timestamps start at 708 and end at 1100 - I take it those units are seconds?)

In particular, there are calls to CopyImage and I added some TRACEs to the
codepath to see that it follows the IMAGE_ICON,IMAGE_CURSOR case and, in
particular, hits a case where somebody left a FIXME:

if (icon->rsrc && (flags & LR_COPYFROMRESOURCE))
                res = CURSORICON_Load( icon->module, icon->resname, desiredx,
desiredy, depth,
                                       !icon->is_icon, flags );
            else {
                // GAME HITS THIS CODE PATH
                res = CopyIcon( hnd ); /* FIXME: change size if necessary */
            }

Does this mean anything to anyone? Am I correct in assuming its building
cursors using CopyIcon and CreateBitmap?

I tried Googling around for some code to dump these bitmaps to a file to
confirm but haven't been able to write anything yet.

$ cat ./maybe_multiple_cursors.log | grep -i "cursor:" | grep -v "X11" | grep
-vi "clip" | grep -vi "xinput"


715.053:trace:cursor:LoadCursorA (nil), #7f00
715.132:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.133:trace:cursor:LoadCursorA (nil), #7f00
715.133:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.133:trace:cursor:LoadCursorA (nil), #7f00
715.133:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.133:trace:cursor:LoadCursorA (nil), #7f00
715.133:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.133:trace:cursor:LoadCursorA (nil), #7f01
715.133:trace:cursor:CURSORICON_Load (nil), #7f01, 0x0, depth 32, fCursor 1,
flags 0x8040
715.134:trace:cursor:LoadCursorA (nil), #7f00
715.134:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.134:trace:cursor:LoadCursorA (nil), #7f00
715.134:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.134:trace:cursor:LoadCursorA (nil), #7f00
715.134:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.134:trace:cursor:LoadCursorA (nil), #7f00
715.134:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.134:trace:cursor:LoadCursorA (nil), #7f00
715.134:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.134:trace:cursor:LoadCursorA (nil), #7f00
715.134:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.516:trace:cursor:LoadCursorW (nil), #7f00
715.516:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.606:trace:cursor:LoadIconA (nil), #7f05
715.612:trace:cursor:LoadIconW (nil), #7f05
715.612:trace:cursor:CURSORICON_Load (nil), #7f05, 0x0, depth 32, fCursor 0,
flags 0x8040
715.613:trace:cursor:GetIconInfoExW 0x10028 => 32x32
715.618:trace:cursor:LoadIconW (nil), #7f05
715.618:trace:cursor:CURSORICON_Load (nil), #7f05, 0x0, depth 32, fCursor 0,
flags 0x8040
715.618:trace:cursor:LoadCursorW (nil), #7f00
715.618:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.619:trace:cursor:CopyImage hnd=0x10028, type=1, desiredx=16, desiredy=16,
flags=0
715.622:trace:cursor:LoadCursorA (nil), #7f00
715.649:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.649:trace:cursor:LoadCursorA (nil), #7f00
715.649:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.650:trace:cursor:LoadCursorA (nil), #7f00
715.650:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.650:trace:cursor:LoadCursorA (nil), #7f00
715.650:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.650:trace:cursor:LoadCursorA (nil), #7f01
715.650:trace:cursor:CURSORICON_Load (nil), #7f01, 0x0, depth 32, fCursor 1,
flags 0x8040
715.650:trace:cursor:LoadCursorA (nil), #7f00
715.650:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.650:trace:cursor:LoadCursorA (nil), #7f00
715.650:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.650:trace:cursor:LoadCursorA (nil), #7f00
715.650:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.650:trace:cursor:LoadCursorA (nil), #7f00
715.650:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.651:trace:cursor:LoadCursorA (nil), #7f00
715.651:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.651:trace:cursor:LoadCursorA (nil), #7f00
715.651:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.651:trace:cursor:CURSORICON_Load (nil), #7f05, 0x0, depth 32, fCursor 0,
flags 0x8040
715.651:trace:cursor:LoadCursorA (nil), #7f00
715.651:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.710:trace:cursor:CopyImage hnd=0x10036, type=1, desiredx=16, desiredy=16,
flags=0
715.801:trace:cursor:LoadCursorW (nil), #7f00
715.801:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.801:trace:cursor:LoadCursorW (nil), #7f00
715.801:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.832:trace:cursor:LoadCursorW (nil), #7f00
715.832:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.832:trace:cursor:LoadCursorW (nil), #7f00
715.832:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.833:trace:cursor:LoadCursorW (nil), #7f00
715.833:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.877:trace:cursor:LoadCursorW (nil), #7f01
715.877:trace:cursor:CURSORICON_Load (nil), #7f01, 0x0, depth 32, fCursor 1,
flags 0x8040
715.929:trace:cursor:LoadCursorW (nil), #7f00
715.929:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.929:trace:cursor:LoadCursorW (nil), #7f00
715.952:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.952:trace:cursor:LoadCursorW (nil), #7f00
715.952:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.952:trace:cursor:LoadCursorW (nil), #7f00
715.952:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
715.952:trace:cursor:LoadCursorW (nil), #7f00
715.952:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
716.008:trace:cursor:LoadCursorW (nil), #7f00
716.009:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
716.009:trace:cursor:LoadCursorW (nil), #7f00
716.009:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
716.009:trace:cursor:LoadCursorW (nil), #7f00
716.009:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
716.037:trace:cursor:LoadCursorW (nil), #7f00
716.037:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
716.037:trace:cursor:LoadCursorW (nil), #7f00
716.037:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
716.037:trace:cursor:CURSORICON_Load 0x7e330000, #0016, 0x0, depth 32, fCursor
0, flags 0x0000
716.037:trace:cursor:CURSORICON_Load 0x7e330000, #0019, 0x0, depth 32, fCursor
0, flags 0x0000
716.038:trace:cursor:CURSORICON_Load 0x7e330000, #001c, 0x0, depth 32, fCursor
0, flags 0x0000
716.038:trace:cursor:LoadCursorW (nil), #7f00
716.038:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
716.038:trace:cursor:LoadCursorW (nil), #7f00
716.038:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
716.038:trace:cursor:LoadCursorW (nil), #7f00
716.038:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
716.835:trace:cursor:CreateIconFromResourceEx 0x37dc22 (1128 bytes), ver
00030000, 32x32 icon 
717.048:trace:cursor:LoadCursorA (nil), #7f00
717.048:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
717.048:trace:cursor:SetCursor 0x10022
717.048:trace:cursor:GetIconInfoExW 0x10022 => 32x32
717.223:trace:cursor:set_window_cursor cursor 0x10022 created 1200034
717.242:trace:cursor:LoadCursorA (nil), #7f00
717.243:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
717.243:trace:cursor:LoadCursorA (nil), #7f00
717.243:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
717.243:trace:cursor:LoadCursorA (nil), #7f00
717.243:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
717.243:trace:cursor:LoadCursorA (nil), #7f00
717.243:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
717.244:trace:cursor:LoadCursorA (nil), #7f01
717.244:trace:cursor:CURSORICON_Load (nil), #7f01, 0x0, depth 32, fCursor 1,
flags 0x8040
717.244:trace:cursor:LoadCursorA (nil), #7f00
717.244:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
717.244:trace:cursor:LoadCursorA (nil), #7f00
717.244:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
717.244:trace:cursor:LoadCursorA (nil), #7f00
717.244:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
717.244:trace:cursor:LoadCursorA (nil), #7f00
717.244:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
717.244:trace:cursor:LoadCursorA (nil), #7f00
717.244:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
717.245:trace:cursor:LoadCursorA (nil), #7f00
717.245:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
718.386:trace:cursor:LoadIconA 0x400000, (null)
718.386:trace:cursor:CURSORICON_Load 0x400000, (null), 0x0, depth 32, fCursor
0, flags 0x8040
718.387:trace:cursor:LoadCursorA (nil), #7f00
718.387:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
718.387:trace:cursor:LoadCursorA (nil), #7f00
718.387:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
718.387:trace:cursor:LoadCursorA (nil), #7f00
718.387:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
718.388:trace:cursor:LoadCursorA (nil), #7f00
718.388:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
718.388:trace:cursor:LoadCursorA (nil), #7f00
718.388:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
718.388:trace:cursor:LoadCursorA (nil), #7f00
718.388:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
718.389:trace:cursor:LoadCursorA (nil), #7f00
718.389:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
719.203:trace:cursor:LoadCursorA (nil), #7f00
719.203:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
719.203:trace:cursor:SetCursor 0x10032
719.255:trace:cursor:LoadCursorW (nil), #7f00
719.255:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
719.256:trace:cursor:GetIconInfoExW 0x10032 => 32x32
719.257:trace:cursor:set_window_cursor cursor 0x10032 created 1600019
719.259:trace:cursor:LoadCursorA (nil), #7f00
719.259:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
719.259:trace:cursor:SetCursor 0x10022
719.274:trace:cursor:LoadIconW (nil), #7f05
719.274:trace:cursor:CURSORICON_Load (nil), #7f05, 0x0, depth 32, fCursor 0,
flags 0x8040
719.275:trace:cursor:GetIconInfoExW 0x10036 => 32x32
720.599:trace:cursor:ShowCursor 0, count=-1
728.763:trace:cursor:SetCursor 0x10032
750.856:trace:cursor:LoadCursorW (nil), #7f00
750.856:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
750.857:trace:cursor:LoadIconW (nil), #7f00
750.857:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 0,
flags 0x8040
750.885:trace:cursor:CopyImage hnd=0x4004e, type=1, desiredx=16, desiredy=16,
flags=0
1091.390:trace:cursor:SetCursor (nil)
1091.392:trace:cursor:LoadCursorA (nil), #7f00
1091.392:trace:cursor:CURSORICON_Load (nil), #7f00, 0x0, depth 32, fCursor 1,
flags 0x8040
1091.392:trace:cursor:SetCursor 0x10022

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list