Commit b5d225e4 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

wined3d: Avoid unmapping the module while the CS thread is still running.

parent b7140a21
......@@ -2451,7 +2451,7 @@ static DWORD WINAPI wined3d_cs_run(void *ctx)
queue->tail = queue->head = 0;
TRACE("Stopped.\n");
return 0;
FreeLibraryAndExitThread(cs->wined3d_module, 0);
}
struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device)
......@@ -2490,9 +2490,19 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device)
goto fail;
}
if (!(GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
(const WCHAR *)wined3d_cs_run, &cs->wined3d_module)))
{
ERR("Failed to get wined3d module handle.\n");
CloseHandle(cs->event);
HeapFree(GetProcessHeap(), 0, cs->data);
goto fail;
}
if (!(cs->thread = CreateThread(NULL, 0, wined3d_cs_run, cs, 0, NULL)))
{
ERR("Failed to create wined3d command stream thread.\n");
FreeLibrary(cs->wined3d_module);
CloseHandle(cs->event);
HeapFree(GetProcessHeap(), 0, cs->data);
goto fail;
......
......@@ -3253,6 +3253,7 @@ struct wined3d_cs
struct wined3d_device *device;
struct wined3d_fb_state fb;
struct wined3d_state state;
HMODULE wined3d_module;
HANDLE thread;
DWORD thread_id;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment