From 655d201cf31a852000b63887f291426b7f8c397b Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Mon, 5 Aug 2019 21:00:02 -0400 Subject: quake: add a bunch more yield calls Probably a bit too many, but good for making sound not skip. Change-Id: I6657dcb4e8e7bb32c6550e2c5e3cee74d79b9ebe --- apps/plugins/sdl/progs/quake/r_main.c | 6 ++++++ apps/plugins/sdl/progs/quake/r_part.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/apps/plugins/sdl/progs/quake/r_main.c b/apps/plugins/sdl/progs/quake/r_main.c index 4aa14d69da..a7133d1f9a 100644 --- a/apps/plugins/sdl/progs/quake/r_main.c +++ b/apps/plugins/sdl/progs/quake/r_main.c @@ -1018,12 +1018,15 @@ void R_RenderView_ (void) R_SetupFrame (); + rb->yield(); // let sound run #ifdef PASSAGES SetVisibilityByPassages (); #else R_MarkLeaves (); // done here so we know if we're in water #endif + rb->yield(); // let sound run + // make FDIV fast. This reduces timing precision after we've been running for a // while, so we don't do it globally. This also sets chop mode, and we do it // here so that setup stuff like the refresh area calculations match what's @@ -1057,6 +1060,7 @@ SetVisibilityByPassages (); de_time1 = se_time2; } + rb->yield(); // let sound run R_DrawEntitiesOnList (); if (r_dspeeds.value) @@ -1065,6 +1069,7 @@ SetVisibilityByPassages (); dv_time1 = de_time2; } + rb->yield(); // let sound run R_DrawViewModel (); if (r_dspeeds.value) @@ -1072,6 +1077,7 @@ SetVisibilityByPassages (); dv_time2 = Sys_FloatTime (); dp_time1 = Sys_FloatTime (); } + rb->yield(); // let sound run R_DrawParticles (); diff --git a/apps/plugins/sdl/progs/quake/r_part.c b/apps/plugins/sdl/progs/quake/r_part.c index 8c0dcff5e8..4895a828c0 100644 --- a/apps/plugins/sdl/progs/quake/r_part.c +++ b/apps/plugins/sdl/progs/quake/r_part.c @@ -696,8 +696,14 @@ void R_DrawParticles (void) break; } + rb->yield(); + + int cnt = 0; + for (p=active_particles ; p ; p=p->next) { + if(!(++cnt%50)) + rb->yield(); for ( ;; ) { kill = p->next; -- cgit v1.2.3