summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/state_trackers/vdpau/presentation.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/vdpau/presentation.c b/src/gallium/state_trackers/vdpau/presentation.c
index 2837e7a306f..1e2c78616e9 100644
--- a/src/gallium/state_trackers/vdpau/presentation.c
+++ b/src/gallium/state_trackers/vdpau/presentation.c
@@ -66,8 +66,8 @@ vlVdpPresentationQueueCreate(VdpDevice device,
return VDP_STATUS_RESOURCES;
pq->device = dev;
- pq->compositor = context->create_compositor(context);
pq->drawable = pqt->drawable;
+ pq->compositor = context->create_compositor(context);
if (!pq->compositor) {
ret = VDP_STATUS_ERROR;
goto no_compositor;
@@ -89,7 +89,20 @@ no_compositor:
VdpStatus
vlVdpPresentationQueueDestroy(VdpPresentationQueue presentation_queue)
{
- return VDP_STATUS_NO_IMPLEMENTATION;
+ vlVdpPresentationQueue *pq;
+
+ _debug_printf("[VDPAU] Destroying PresentationQueue\n");
+
+ pq = vlGetDataHTAB(presentation_queue);
+ if (!pq)
+ return VDP_STATUS_INVALID_HANDLE;
+
+ pq->compositor->destroy(pq->compositor);
+
+ vlRemoveDataHTAB(presentation_queue);
+ FREE(pq);
+
+ return VDP_STATUS_OK;
}
VdpStatus