Giovanni Mascellani (@giomasce) commented about dlls/mfplat/main.c:
+{ + struct list *next; + struct d3d12_sync_object_release *relobj; + HRESULT hr; + + next = list_next(&syncobj->release_freelist, syncobj->release_freelist_cursor); + if (next) + { + relobj = LIST_ENTRY(next, struct d3d12_sync_object_release, entry); + } + else + { + relobj = calloc(1, sizeof(*relobj)); + if (!relobj) + return E_OUTOFMEMORY; + relobj->event = CreateEventA(NULL, FALSE, FALSE, NULL); It doesn't seem this event is ever reset after being used; so the second time you use `struct d3d12_sync_object_release` the event will already be set.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/9777#note_137217