From a44be6194cd53ee8866060371c89ef190839455f Mon Sep 17 00:00:00 2001 From: TomW Date: Fri, 5 Jun 2015 20:48:29 +0100 Subject: [PATCH] Further fixes to framebuffer read hangs in Voodoo - fixes International Rally Championship. --- src/vid_voodoo.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/vid_voodoo.c b/src/vid_voodoo.c index bea3c93..13f64a1 100644 --- a/src/vid_voodoo.c +++ b/src/vid_voodoo.c @@ -3404,8 +3404,13 @@ static uint32_t voodoo_readl(uint32_t addr, void *p) break; case SST_lfbMode: + voodoo->flush = 1; while (!FIFO_EMPTY) - thread_wait_event(voodoo->not_full_event, -1); + { + wake_render_thread(voodoo); + thread_wait_event(voodoo->not_full_event, 1); + } + voodoo->flush = 0; temp = voodoo->lfbMode; break; @@ -3573,6 +3578,7 @@ static void render_thread(void *param) while (1) { + thread_set_event(voodoo->not_full_event); thread_wait_event(voodoo->wake_render_thread, -1); thread_reset_event(voodoo->wake_render_thread);