#include "qtcamgstreamermessagelistener.h"
#include "qtcamdevice.h"
#include "qtcamdevice_p.h"
-
+#include <QPointer>
#include <QDebug>
#ifndef GST_USE_UNSTABLE_API
}
~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;
}
gst_photography_set_autofocus(photo, enabled ? TRUE : FALSE);
+ if (enabled) {
+ status = QtCamAutoFocus::Running;
+ emit q_ptr->statusChanged();
+ }
+ else {
+ status = QtCamAutoFocus::None;
+ emit q_ptr->statusChanged();
+ }
+
return true;
}
bool setStatus(QtCamAutoFocus::Status *status, GstMessage *message) {
const GstStructure *s = gst_message_get_structure(message);
int st = GST_PHOTOGRAPHY_FOCUS_STATUS_NONE;
-
if (gst_structure_get_int(s, "status", &st)) {
if (*status != st) {
*status = (QtCamAutoFocus::Status) st;
return false;
}
+ bool sendEventToSource(GstEvent *event) {
+ if (!dev->d_ptr->videoSource) {
+ qWarning() << "No video source";
+ gst_event_unref(event);
+ return false;
+ }
+
+ return gst_element_send_event(dev->d_ptr->videoSource, event) == TRUE ? true : false;
+ }
+
public slots:
void handleMessage(GstMessage *message) {
if (setStatus(&status, message)) {
}
public:
- QtCamDevice *dev;
+ QPointer<QtCamDevice> dev;
QtCamAutoFocus *q_ptr;
QtCamAutoFocus::Status status;