Added reset button to exposure settings
[harmattan/cameraplus] / lib / qtcamgstreamermessagelistener.cpp
index 94600e1..fc39300 100644 (file)
@@ -1,3 +1,23 @@
+/*!
+ * This file is part of CameraPlus.
+ *
+ * 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
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
 #include "qtcamgstreamermessagelistener.h"
 #include "qtcamgstreamermessagehandler.h"
 #include <QMultiMap>
@@ -16,8 +36,11 @@ public:
       return 0;
     }
 
-    QList<QtCamGStreamerMessageHandler *> list =
-      map.values(gst_structure_get_name(s));
+#if 0
+    qDebug() << "Message" << gst_structure_get_name(s);
+#endif
+
+    QList<QtCamGStreamerMessageHandler *> list = map.values(gst_structure_get_name(s));
 
     foreach (QtCamGStreamerMessageHandler *handler, list) {
       handler->handleMessage(message);
@@ -42,7 +65,9 @@ public:
       QMetaObject::invokeMethod(q_ptr, "error", Q_ARG(QString, err->message),
                                Q_ARG(int, err->code), Q_ARG(QString, debug));
 
+#if 0
       qDebug() << "Error" << err->message << ":" << debug;
+#endif
 
       g_error_free(err);
       g_free(debug);
@@ -86,13 +111,15 @@ public:
        QMetaObject::invokeMethod(q_ptr, "started");
       }
       else if (oldState == GST_STATE_PLAYING && newState == GST_STATE_PAUSED) {
+       QMetaObject::invokeMethod(q_ptr, "stopping");
+      }
+      else if (oldState == GST_STATE_READY && newState == GST_STATE_NULL) {
        QMetaObject::invokeMethod(q_ptr, "stopped");
       }
     }
       break;
 
     default:
-      // TODO: other types
       break;
     }
   }
@@ -152,8 +179,10 @@ GstBusSyncReply sync_handler(GstBus *bus, GstMessage *message, gpointer data) {
     static_cast<QtCamGStreamerMessageListenerPrivate *>(data);
 
   if (d_ptr->handleSyncMessage(message)) {
-    gst_message_unref(message);
-    return GST_BUS_DROP;
+    // We need to pass the message.
+    // Issue is we have 2 video-done handlers, a sync and an async.
+    // If we drop the message then the async handler will never see it :|
+    return GST_BUS_PASS;
   }
 
   return GST_BUS_PASS;