On 7/2/21 8:48 AM, Henri Verbeet wrote:
On Fri, 2 Jul 2021 at 00:35, Zebediah Figura z.figura12@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()...