gtkbasesink: post message to application for unhandled keyboard/mouse events
authorVineeth TM <vineeth.tm@samsung.com>
Wed, 9 Mar 2016 23:44:57 +0000 (08:44 +0900)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 24 Mar 2016 12:58:24 +0000 (14:58 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=763403

ext/gtk/gstgtkbasesink.c

index f0019bf..44c8cbd 100644 (file)
@@ -286,10 +286,14 @@ gst_gtk_base_sink_navigation_send_event (GstNavigation * navigation,
 
   GST_TRACE_OBJECT (sink, "navigation event %" GST_PTR_FORMAT, structure);
 
-  if (GST_IS_PAD (pad)) {
-    if (GST_IS_EVENT (event))
-      gst_pad_send_event (pad, event);
-
+  if (GST_IS_PAD (pad) && GST_IS_EVENT (event)) {
+    if (!gst_pad_send_event (pad, gst_event_ref (event))) {
+      /* If upstream didn't handle the event we'll post a message with it
+       * for the application in case it wants to do something with it */
+      gst_element_post_message (GST_ELEMENT_CAST (sink),
+          gst_navigation_message_new_event (GST_OBJECT_CAST (sink), event));
+    }
+    gst_event_unref (event);
     gst_object_unref (pad);
   }
 }