X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lib%2Fqtcamgstreamermessagelistener.cpp;h=fc39300b4e20ee3b580f4703a2620855807263a2;hb=0da718e86100458cc336d51ca79554e4fbac415d;hp=8f6181f84bf9ca2e04bb0883fed3600b1678e717;hpb=4dc62bddaa4d14f550b809afe52e7fb43477b589;p=harmattan%2Fcameraplus diff --git a/lib/qtcamgstreamermessagelistener.cpp b/lib/qtcamgstreamermessagelistener.cpp index 8f6181f..fc39300 100644 --- a/lib/qtcamgstreamermessagelistener.cpp +++ b/lib/qtcamgstreamermessagelistener.cpp @@ -1,7 +1,7 @@ /*! * This file is part of CameraPlus. * - * Copyright (C) 2012 Mohammed Sameer + * Copyright (C) 2012-2013 Mohammed Sameer * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -179,8 +179,10 @@ GstBusSyncReply sync_handler(GstBus *bus, GstMessage *message, gpointer data) { static_cast(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; @@ -243,27 +245,3 @@ void QtCamGStreamerMessageListener::flushMessages() { gst_message_unref(message); } } - -GstMessage *QtCamGStreamerMessageListener::waitForMessage(const QLatin1String& name) { - GstMessage *message = 0; - - while (!message) { - message = gst_bus_timed_pop_filtered(d_ptr->bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ELEMENT); - if (!message) { - // Hmmm, what to do here?? - continue; - } - - d_ptr->handleMessage(message); - const GstStructure *s = gst_message_get_structure(message); - const gchar *n = s ? gst_structure_get_name(s) : 0; - if (s && n && n == name) { - return message; - } - - gst_message_unref(message); - message = 0; - } - - return 0; -}