summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/vdpau/output.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/state_trackers/vdpau/output.c')
-rw-r--r--src/gallium/state_trackers/vdpau/output.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/vdpau/output.c b/src/gallium/state_trackers/vdpau/output.c
index f67d6ccff6b..bc4b39ae75c 100644
--- a/src/gallium/state_trackers/vdpau/output.c
+++ b/src/gallium/state_trackers/vdpau/output.c
@@ -88,6 +88,7 @@ vlVdpOutputSurfaceCreate(VdpDevice device,
vlsurface->sampler_view = pipe->create_sampler_view(pipe, res, &sv_templ);
if (!vlsurface->sampler_view) {
+ pipe_resource_reference(&res, NULL);
FREE(dev);
return VDP_STATUS_ERROR;
}
@@ -97,15 +98,19 @@ vlVdpOutputSurfaceCreate(VdpDevice device,
surf_templ.usage = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET;
vlsurface->surface = pipe->create_surface(pipe, res, &surf_templ);
if (!vlsurface->surface) {
+ pipe_resource_reference(&res, NULL);
FREE(dev);
return VDP_STATUS_ERROR;
}
*surface = vlAddDataHTAB(vlsurface);
if (*surface == 0) {
+ pipe_resource_reference(&res, NULL);
FREE(dev);
return VDP_STATUS_ERROR;
}
+
+ pipe_resource_reference(&res, NULL);
return VDP_STATUS_OK;
}