Don't try to unregister the status handlers unless we have a device and listener.
authorMohammed Sameer <msameer@foolab.org>
Fri, 14 Dec 2012 22:36:15 +0000 (00:36 +0200)
committerMohammed Sameer <msameer@foolab.org>
Fri, 14 Dec 2012 22:36:15 +0000 (00:36 +0200)
This avoids a crash.

lib/qtcamautofocus_p.h

index 159c0a6..deade4c 100644 (file)
@@ -28,7 +28,7 @@
 #include "qtcamgstreamermessagelistener.h"
 #include "qtcamdevice.h"
 #include "qtcamdevice_p.h"
-
+#include <QPointer>
 #include <QDebug>
 
 #ifndef GST_USE_UNSTABLE_API
@@ -63,8 +63,11 @@ public:
   }
 
   ~QtCamAutoFocusPrivate() {
-    dev->listener()->removeHandler(handler);
-    delete handler; handler = 0;
+    if (dev && dev->listener()) {
+      dev->listener()->removeHandler(handler);
+      delete handler; handler = 0;
+    }
+
     dev = 0;
     q_ptr = 0;
   }
@@ -126,7 +129,7 @@ public slots:
   }
 
 public:
-  QtCamDevice *dev;
+  QPointer<QtCamDevice> dev;
   QtCamAutoFocus *q_ptr;
 
   QtCamAutoFocus::Status status;