summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndoni Morales Alastruey <ylatuya@gmail.com>2012-06-25 16:18:41 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-06-26 09:35:14 +0200
commit1d431e79774a084eee73d886b4d7af3104177996 (patch)
tree1213bf0d5f5f0d5f8829fb53926d1ea1fa5f307f
parenteddfce945141caea01153e9f5583057ae2055bf9 (diff)
d3dvideosink: release the offscreen surface before the d3d device
The offscreen surface keeps a reference on the d3d device, so if the device is released first we don't see the reference count debug message going to 0 as it should be.
-rw-r--r--sys/d3dvideosink/d3dvideosink.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/sys/d3dvideosink/d3dvideosink.c b/sys/d3dvideosink/d3dvideosink.c
index 2fe672843..36c435c5d 100644
--- a/sys/d3dvideosink/d3dvideosink.c
+++ b/sys/d3dvideosink/d3dvideosink.c
@@ -2250,13 +2250,6 @@ error:
static gboolean
gst_d3dvideosink_release_d3d_device (GstD3DVideoSink * sink)
{
- if (sink->d3ddev) {
- int ref_count;
- ref_count = IDirect3DDevice9_Release (sink->d3ddev);
- sink->d3ddev = NULL;
- GST_DEBUG_OBJECT (sink, "Direct3D device released. Reference count: %d",
- ref_count);
- }
if (sink->d3d_offscreen_surface) {
int ref_count;
ref_count = IDirect3DSurface9_Release (sink->d3d_offscreen_surface);
@@ -2264,6 +2257,13 @@ gst_d3dvideosink_release_d3d_device (GstD3DVideoSink * sink)
GST_DEBUG_OBJECT (sink,
"Direct3D offscreen surface released. Reference count: %d", ref_count);
}
+ if (sink->d3ddev) {
+ int ref_count;
+ ref_count = IDirect3DDevice9_Release (sink->d3ddev);
+ sink->d3ddev = NULL;
+ GST_DEBUG_OBJECT (sink, "Direct3D device released. Reference count: %d",
+ ref_count);
+ }
return TRUE;
}