mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-04-22 16:25:34 +02:00
gdk: Render/GPU can call SuspendX, document when to call SuspendComplete
This commit is contained in:
@@ -562,10 +562,26 @@ static HRESULT D3D12_IssueBatch(D3D12_RenderData *data)
|
||||
return result;
|
||||
}
|
||||
|
||||
#ifdef SDL_PLATFORM_GDK
|
||||
static bool SDLCALL D3D12_GDKEventFilter(void* userdata, SDL_Event* event)
|
||||
{
|
||||
D3D12_RenderData *data = (D3D12_RenderData *)userdata;
|
||||
if (event->type == SDL_EVENT_DID_ENTER_BACKGROUND) {
|
||||
data->commandQueue->SuspendX(0);
|
||||
} else if (event->type == SDL_EVENT_WILL_ENTER_FOREGROUND) {
|
||||
data->commandQueue->ResumeX();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void D3D12_DestroyRenderer(SDL_Renderer *renderer)
|
||||
{
|
||||
D3D12_RenderData *data = (D3D12_RenderData *)renderer->internal;
|
||||
if (data) {
|
||||
#ifdef SDL_PLATFORM_GDK
|
||||
SDL_RemoveEventWatch(D3D12_GDKEventFilter, data);
|
||||
#endif
|
||||
D3D12_WaitForGPU(data);
|
||||
D3D12_ReleaseAll(renderer);
|
||||
SDL_free(data);
|
||||
@@ -1112,6 +1128,10 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
|
||||
SDL_SetPointerProperty(props, SDL_PROP_RENDERER_D3D12_DEVICE_POINTER, data->d3dDevice);
|
||||
SDL_SetPointerProperty(props, SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER, data->commandQueue);
|
||||
|
||||
#ifdef SDL_PLATFORM_GDK
|
||||
SDL_AddEventWatch(D3D12_GDKEventFilter, data);
|
||||
#endif
|
||||
|
||||
done:
|
||||
D3D_SAFE_RELEASE(d3dDevice);
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user