Mercurial > repos > blastem
comparison render_sdl.c @ 1979:06c25babe464
Don't hold frame queue mutex while rendering
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 09 May 2020 21:37:35 -0700 |
parents | 33d5b9b77aef |
children | 81df9aa2de9b |
comparison
equal
deleted
inserted
replaced
1978:33d5b9b77aef | 1979:06c25babe464 |
---|---|
1707 while (!frame_queue_len) | 1707 while (!frame_queue_len) |
1708 { | 1708 { |
1709 SDL_CondWait(frame_ready, frame_mutex); | 1709 SDL_CondWait(frame_ready, frame_mutex); |
1710 } | 1710 } |
1711 for (int i = 0; i < frame_queue_len; i++) | 1711 for (int i = 0; i < frame_queue_len; i++) |
1712 while (frame_queue_len) | |
1712 { | 1713 { |
1713 frame f = frame_queue[frame_queue_read++]; | 1714 frame f = frame_queue[frame_queue_read++]; |
1714 frame_queue_read &= 0x3; | 1715 frame_queue_read &= 0x3; |
1716 frame_queue_len--; | |
1717 SDL_UnlockMutex(frame_mutex); | |
1715 process_framebuffer(f.buffer, f.which, f.width); | 1718 process_framebuffer(f.buffer, f.which, f.width); |
1716 release_buffer(f.buffer); | 1719 release_buffer(f.buffer); |
1717 } | 1720 SDL_LockMutex(frame_mutex); |
1718 frame_queue_len = 0; | 1721 } |
1719 } | 1722 } |
1720 | 1723 |
1721 SDL_UnlockMutex(frame_mutex); | 1724 SDL_UnlockMutex(frame_mutex); |
1722 } | 1725 } |
1723 | 1726 |