X-Git-Url: http://cgit.sxemacs.org/?p=harmattan%2Fcameraplus;a=blobdiff_plain;f=lib%2Fqtcamgstreamermessagelistener.cpp;fp=lib%2Fqtcamgstreamermessagelistener.cpp;h=8f6181f84bf9ca2e04bb0883fed3600b1678e717;hp=a6c236d394ab8f1a900761a2c26f92e7e06f925a;hb=4dc62bddaa4d14f550b809afe52e7fb43477b589;hpb=846bdbadb55db9ccdb1a74cace77dc994f266aec diff --git a/lib/qtcamgstreamermessagelistener.cpp b/lib/qtcamgstreamermessagelistener.cpp index a6c236d..8f6181f 100644 --- a/lib/qtcamgstreamermessagelistener.cpp +++ b/lib/qtcamgstreamermessagelistener.cpp @@ -243,3 +243,27 @@ 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; +}