diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12commandqueue.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12commandqueue.cpp index 3cf40add70..b43110fa23 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12commandqueue.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12commandqueue.cpp @@ -244,6 +244,11 @@ gst_d3d12_command_queue_execute_command_lists_unlocked (GstD3D12CommandQueue * if (priv->queue_size > 0) { auto completed = priv->fence->GetCompletedValue (); + if (completed == G_MAXUINT64) { + GST_ERROR_OBJECT (queue, "Device removed"); + return DXGI_ERROR_DEVICE_REMOVED; + } + if (completed + priv->queue_size < priv->fence_val) { hr = priv->fence->SetEventOnCompletion (priv->fence_val - priv->queue_size, priv->event_handle);