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