Reset class members to NULL after gst_*_unref()
authorSander Mathijs van Veen <smvv@kompiler.org>
Wed, 23 Jul 2014 17:15:16 +0000 (19:15 +0200)
committerSander Mathijs van Veen <smvv@kompiler.org>
Wed, 23 Jul 2014 17:15:16 +0000 (19:15 +0200)
modules/videoio/src/cap_gstreamer.cpp

index c5a78a0..fea148f 100644 (file)
@@ -185,31 +185,41 @@ void CvCapture_GStreamer::close()
     if(pipeline) {
         gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_NULL);
         gst_object_unref(GST_OBJECT(pipeline));
+        pipeline = NULL;
     }
     if(uridecodebin){
         gst_object_unref(GST_OBJECT(uridecodebin));
+        uridecodebin = NULL;
     }
     if(color){
         gst_object_unref(GST_OBJECT(color));
+        color = NULL;
     }
     if(sink){
         gst_object_unref(GST_OBJECT(sink));
+        sink = NULL;
     }
-    if(buffer)
+    if(buffer) {
         gst_buffer_unref(buffer);
+        buffer = NULL;
+    }
     if(frame) {
         frame->imageData = 0;
         cvReleaseImage(&frame);
+        frame = NULL;
     }
     if(caps){
         gst_caps_unref(caps);
+        caps = NULL;
     }
     if(buffer_caps){
         gst_caps_unref(buffer_caps);
+        buffer_caps = NULL;
     }
 #if GST_VERSION_MAJOR > 0
     if(sample){
         gst_sample_unref(sample);
+        sample = NULL;
     }
 #endif