2 Jul
2021
2 Jul
'21
3:55 p.m.
On 7/2/21 8:48 AM, Henri Verbeet wrote:
On Fri, 2 Jul 2021 at 00:35, Zebediah Figura <z.figura12(a)gmail.com> wrote:
static BOOL wined3d_cs_queue_is_empty(const struct wined3d_cs *cs, const struct wined3d_cs_queue *queue) { - wined3d_from_cs(cs); + wined3d_from_cs(cs->c.device); return *(volatile LONG *)&queue->head == queue->tail; } This introduces a race though. If wined3d_cs_run() gets to wined3d_cs_queue_is_empty() before wined3d_device_init() gets to the "device->cs" assignment, wined3d_from_cs() will dereference a NULL "device->cs".
Indeed. Maybe this assertion should just be removed; it's a little aggressive for a function that's only called from directly inside wined3d_cs_run()...