/*!
* This file is part of CameraPlus.
*
- * Copyright (C) 2012 Mohammed Sameer <msameer@foolab.org>
+ * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
#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;
public slots:
void handleMessage(GstMessage *message) {
if (setStatus(&status, message)) {
- // TODO: focus-window-rows, focus-window-columns, focus-windows and the rest
emit q_ptr->statusChanged();
}
}
}
public:
- QtCamDevice *dev;
+ QPointer<QtCamDevice> dev;
QtCamAutoFocus *q_ptr;
QtCamAutoFocus::Status status;