summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian König <deathsimple@vodafone.de>2012-03-07 14:51:46 +0100
committerChristian König <deathsimple@vodafone.de>2012-03-08 14:13:14 +0100
commitab832b5334a648ead395ac7aec3315600a96ec3f (patch)
tree24f6abd4739e389b6af4d68d6ec683256e9a3b6c
parentbccdce8c1e488d8f0d5c5c209a552989f2bdf185 (diff)
st/vdpau: fix two small memory leaks
Signed-off-by: Christian König <deathsimple@vodafone.de>
-rw-r--r--src/gallium/state_trackers/vdpau/device.c4
-rw-r--r--src/gallium/state_trackers/vdpau/output.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/vdpau/device.c b/src/gallium/state_trackers/vdpau/device.c
index 5af1570d5a..2e38f6cdad 100644
--- a/src/gallium/state_trackers/vdpau/device.c
+++ b/src/gallium/state_trackers/vdpau/device.c
@@ -292,8 +292,8 @@ vlVdpResolveDelayedRendering(vlVdpDevice *dev, struct pipe_surface *surface, str
struct pipe_sampler_view sv_templ;
vlVdpDefaultSamplerViewTemplate(&sv_templ, res);
- pipe_sampler_view_reference(&vlsurface->sampler_view,
- dev->context->create_sampler_view(dev->context, res, &sv_templ));
+ pipe_sampler_view_reference(&vlsurface->sampler_view, NULL);
+ vlsurface->sampler_view = dev->context->create_sampler_view(dev->context, res, &sv_templ);
}
return;
diff --git a/src/gallium/state_trackers/vdpau/output.c b/src/gallium/state_trackers/vdpau/output.c
index 7e3d74d801..5b25e63d28 100644
--- a/src/gallium/state_trackers/vdpau/output.c
+++ b/src/gallium/state_trackers/vdpau/output.c
@@ -133,16 +133,20 @@ VdpStatus
vlVdpOutputSurfaceDestroy(VdpOutputSurface surface)
{
vlVdpOutputSurface *vlsurface;
+ struct pipe_context *pipe;
vlsurface = vlGetDataHTAB(surface);
if (!vlsurface)
return VDP_STATUS_INVALID_HANDLE;
+ pipe = vlsurface->device->context;
+
pipe_mutex_lock(vlsurface->device->mutex);
vlVdpResolveDelayedRendering(vlsurface->device, NULL, NULL);
pipe_surface_reference(&vlsurface->surface, NULL);
pipe_sampler_view_reference(&vlsurface->sampler_view, NULL);
+ pipe->screen->fence_reference(pipe->screen, &vlsurface->fence, NULL);
vl_compositor_cleanup_state(&vlsurface->cstate);
pipe_mutex_unlock(vlsurface->device->mutex);