# HG changeset patch # User Michael Pavone # Date 1589085455 25200 # Node ID 06c25babe464e1a5eaa1f2b98675c0d8594cc36a # Parent 33d5b9b77aef7041283e7317aa6780b8f15df8fe Don't hold frame queue mutex while rendering diff -r 33d5b9b77aef -r 06c25babe464 render_sdl.c --- a/render_sdl.c Sat May 09 21:35:42 2020 -0700 +++ b/render_sdl.c Sat May 09 21:37:35 2020 -0700 @@ -1709,13 +1709,16 @@ SDL_CondWait(frame_ready, frame_mutex); } for (int i = 0; i < frame_queue_len; i++) + while (frame_queue_len) { frame f = frame_queue[frame_queue_read++]; frame_queue_read &= 0x3; + frame_queue_len--; + SDL_UnlockMutex(frame_mutex); process_framebuffer(f.buffer, f.which, f.width); release_buffer(f.buffer); + SDL_LockMutex(frame_mutex); } - frame_queue_len = 0; } SDL_UnlockMutex(frame_mutex);