diff options
-rw-r--r-- | src/gallium/state_trackers/vdpau/presentation.c | 17 |
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 |