ximagesink: Post navigation events as message on the bus
authorVineeth T M <vineeth.tm@samsung.com>
Tue, 7 Jul 2015 10:45:43 +0000 (19:45 +0900)
committerLuis de Bethencourt <luis@debethencourt.com>
Tue, 7 Jul 2015 10:58:45 +0000 (11:58 +0100)
post unhandled events to bus, so that
application can utilise the same if needed

https://bugzilla.gnome.org/show_bug.cgi?id=752043

sys/ximage/ximagesink.c

index a0eb5b4..3e6e838 100644 (file)
@@ -1528,6 +1528,7 @@ gst_x_image_sink_navigation_send_event (GstNavigation * navigation,
   GstEvent *event = NULL;
   gint x_offset, y_offset;
   gdouble x, y;
+  gboolean handled = FALSE;
 
   /* We are not converting the pointer coordinates as there's no hardware
      scaling done here. The only possible scaling is done by videoscale and
@@ -1558,8 +1559,17 @@ gst_x_image_sink_navigation_send_event (GstNavigation * navigation,
   }
 
   event = gst_event_new_navigation (structure);
-  if (event)
-    gst_pad_push_event (GST_VIDEO_SINK_PAD (ximagesink), event);
+  if (event) {
+    gst_event_ref (event);
+    handled = gst_pad_push_event (GST_VIDEO_SINK_PAD (ximagesink), event);
+
+    if (!handled)
+      gst_element_post_message (GST_ELEMENT_CAST (ximagesink),
+          gst_navigation_message_new_event (GST_OBJECT_CAST (ximagesink),
+              event));
+
+    gst_event_unref (event);
+  }
 }
 
 static void