Opened 4 months ago

Closed 4 months ago

Last modified 4 months ago

#13519 closed defect (fixed)

CHEWY: feeding sequence hanging when scummvm window not active

Reported by: afreickmann Owned by: dreammaster
Priority: normal Component: Engine: Chewy
Version: Keywords:
Cc: Game: Chewy: ESC from F5

Description

I wasnt able to fully reproduce it, but the easiest was to switch to another window while waiting for the prison feeding sequence. This cause a very weird bug in the game hanging and when trying to close ScummVM that the game gets totally bonkers before quitting.

Attachments (1)

1.txt (119.0 KB ) - added by afreickmann 4 months ago.

Download all attachments as: .zip

Change History (4)

by afreickmann, 4 months ago

Attachment: 1.txt added

comment:1 by dreammaster, 4 months ago

Summary: Chewy: feeding sequence hanging when scummvm window not activeCHEWY: feeding sequence hanging when scummvm window not active

Thanks for the report. I seem to have gotten a lead on it.. it can be consistently replicated if after the first feeding you don't move at all and wait for the second. The problem seems to be one of the room's timers isn't being properly reset, so gets in an endless cycle triggering the timer:

scummvm.exe!Chewy::Rooms::Room0::timer(short timerNr, short aniNr) Line 97 C++

scummvm.exe!Chewy::timer_action(short t_nr) Line 100 C++
scummvm.exe!Chewy::calc_ani_timer() Line 1557 C++
scummvm.exe!Chewy::setupScreen(Chewy::SetupScreenMode mode) Line 480 C++
scummvm.exe!Chewy::autoMove(short movNr, short playerNum) Line 1195 C++
scummvm.exe!Chewy::Rooms::Room0::timer(short timerNr, short aniNr) Line 84 C++

I'm looking into it further.

comment:2 by dreammaster, 4 months ago

Owner: set to dreammaster
Resolution: fixed
Status: newclosed

Okay fixed. The section being triggered multiple times is guarded by a "is_chewy_busy" check, which should have been on.. not sure why it wasn't.. maybe we're doing an extra call to refresh the screen that's triggered before Chewy starts moving and the flag is properly set. In any case, the room 0 timer logic sets the AutoAniPlay flag for the entire time it runs, so I just added an extra check for it already being set, and skipped restarting the animation if it is.

comment:3 by afreickmann, 4 months ago

I hope you can also speed up the whole process somehow, the feeding sequence trigger is so damned slow, don't want to know how many sessions of waiting hell you had ;)

Note: See TracTickets for help on using tickets.