d3dvideosink: Don't leak GThread object
authorSeungha Yang <seungha.yang@navercorp.com>
Sat, 3 Nov 2018 11:20:50 +0000 (20:20 +0900)
committerSebastian Dröge <slomo@coaxion.net>
Tue, 6 Nov 2018 11:51:39 +0000 (11:51 +0000)
Need to call g_thread_join() to avoid leak

sys/d3dvideosink/d3dhelpers.c
sys/d3dvideosink/d3dvideosink.h

index c49d3c5..9b0e991 100644 (file)
@@ -1208,6 +1208,12 @@ d3d_stop (GstD3DVideoSink * sink)
 
   /* Release D3D resources */
   d3d_set_window_handle (sink, 0, FALSE);
+
+  if (sink->internal_window_thread) {
+    g_thread_join (sink->internal_window_thread);
+    sink->internal_window_thread = NULL;
+  }
+
   return TRUE;
 }
 
@@ -2262,6 +2268,8 @@ d3d_create_internal_window (GstD3DVideoSink * sink)
     return 0;
   }
 
+  sink->internal_window_thread = thread;
+
   /* Wait 10 seconds for window proc loop to start up */
   for (i = 0; dat.running == FALSE && i < intervals; i++) {
     g_usleep (timeout_interval);
index de0da25..67ac6c0 100644 (file)
@@ -60,6 +60,7 @@ struct _GstD3DVideoSink
   GstVideoRectangle  render_rect;
 
   GRecMutex    lock;
+  GThread *internal_window_thread;
 
   /* Properties */
   gboolean           force_aspect_ratio;