Giovanni Mascellani (@giomasce) commented about libs/vkd3d/command.c:
- if (list->allocator) +static HRESULT STDMETHODCALLTYPE d3d12_command_list_Close(ID3D12GraphicsCommandList3 *iface) +{ + struct d3d12_command_list *list = impl_from_ID3D12GraphicsCommandList3(iface); + + TRACE("iface %p.\n", iface); + + if (!list->is_recording) { - d3d12_command_allocator_remove_command_list(list->allocator, list); - list->allocator = NULL; + WARN("Command list is not in the recording state.\n"); + return E_FAIL; }
+ if (list->allocator) You already check for `list->allocator` to be valid inside `d3d12_command_allocatore_remove_command_list()`.
OTOH, you don't set `list->allocator = NULL` any more. Is that intended? -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/294#note_42746