Ren'Py stops responding to input when rendering takes too long

Bug #413441 reported by Spiky Caterpillar
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ren'Py
Fix Released
Medium
Tom Rothamel

Bug Description

If a displayable takes too long to render, Ren'Py can wind up ignoring user input in favor of repeatedly redrawing the screen. The attached script.rpy exercises the bug - shift-R will not reload the script on 6.9.3c, and it can't be quit normally. I've also seen the same effect with complex custom displayables on slow machines (and with poorly written complex custom displayables on fast machines.) IMO, interact_core() should process the entire event queue after each frame instead of just the first event. A somewhat ugly patch to do that is also attached; it seems to work with the sample program and with my latest project, but I haven't tested it thoroughly. The most likely thing I can think of that it might break on is displayables that trigger a redraw from within their render() method.

Revision history for this message
Spiky Caterpillar (spikycaterpillar) wrote :

Bug exerciser.

Revision history for this message
Spiky Caterpillar (spikycaterpillar) wrote :
Revision history for this message
Spiky Caterpillar (spikycaterpillar) wrote :

Updated patch to get the mouse position from the event instead of using the current mouse position. This way, mouseup events will be handled as a mouseup wherever the actual mouseup occurred instead of a mouseup wherever the mouse is now, falling back to the actual mouse position if there is no position in the event.

As before, I've been using this patch for approximately four minutes, so there's still risk of it breaking unexpected things.

Revision history for this message
Tom Rothamel (renpytom) wrote :

I went in a different direction, but the fix will be in Ren'Py 6.10.0.

Changed in renpy:
status: New → Fix Committed
importance: Undecided → Medium
assignee: nobody → renpytom (renpytom)
milestone: none → 6.10
Tom Rothamel (renpytom)
Changed in renpy:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Bug attachments

Remote bug watches

Bug watches keep track of this bug in other bug trackers.