diff options
author | Michael Pavone <pavone@retrodev.com> | 2020-05-09 21:37:35 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2020-05-09 21:37:35 -0700 |
commit | 99637c7a9ae8db68effe0667aaa9c574c9541c22 (patch) | |
tree | ea83462bc44b9f0b268e93ae3969642e8deeeef4 /render_sdl.c | |
parent | 2ac3a6d82eceaace29f0111cddc4b99c592c6a0d (diff) |
Don't hold frame queue mutex while rendering
Diffstat (limited to 'render_sdl.c')
-rwxr-xr-x | render_sdl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/render_sdl.c b/render_sdl.c index 3180c68..54fa3a5 100755 --- a/render_sdl.c +++ b/render_sdl.c @@ -1709,13 +1709,16 @@ void render_video_loop(void) 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); |