Fix missing particles in true color mode

This commit is contained in:
Magnus Norddahl 2016-06-12 00:50:43 +02:00
parent 351874be30
commit 42efc7334e
3 changed files with 12 additions and 2 deletions

View file

@ -570,12 +570,15 @@ public:
} }
} }
// Redirects all drawing commands to worker threads until Finish is called // Redirects all drawing commands to worker threads until End is called
// Begin/End blocks can be nested. // Begin/End blocks can be nested.
static void Begin(); static void Begin();
// Wait until all worker threads finished executing commands // End redirection and wait until all worker threads finished executing
static void End(); static void End();
// Waits until all worker threads finished executing
static void WaitForWorkers();
}; };
#endif #endif

View file

@ -97,6 +97,11 @@ void DrawerCommandQueue::End()
queue->threaded_render--; queue->threaded_render--;
} }
void DrawerCommandQueue::WaitForWorkers()
{
Instance()->Finish();
}
void DrawerCommandQueue::Finish() void DrawerCommandQueue::Finish()
{ {
auto queue = Instance(); auto queue = Instance();

View file

@ -2686,6 +2686,8 @@ void R_DrawParticle_RGBA(vissprite_t *vis)
int countbase = vis->x2 - x1; int countbase = vis->x2 - x1;
R_DrawMaskedSegsBehindParticle(vis); R_DrawMaskedSegsBehindParticle(vis);
DrawerCommandQueue::WaitForWorkers();
uint32_t fg = shade_pal_index_simple(color, calc_light_multiplier(LIGHTSCALE(0, vis->Style.ColormapNum << FRACBITS))); uint32_t fg = shade_pal_index_simple(color, calc_light_multiplier(LIGHTSCALE(0, vis->Style.ColormapNum << FRACBITS)));
uint32_t fg_red = (fg >> 16) & 0xff; uint32_t fg_red = (fg >> 16) & 0xff;