[rygel] examples: Add play/pause to space key



commit 0a8d3437d89dca5d89efda8d714cf7fcf45e8d8a
Author: Jens Georg <mail jensge org>
Date:   Sun Jul 12 11:21:05 2020 +0200

    examples: Add play/pause to space key
    
    For fullscreen renderer

 examples/fullscreen-renderer.c | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)
---
diff --git a/examples/fullscreen-renderer.c b/examples/fullscreen-renderer.c
index 317212ea..f1337ee8 100644
--- a/examples/fullscreen-renderer.c
+++ b/examples/fullscreen-renderer.c
@@ -130,13 +130,37 @@ static gboolean on_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)
     return TRUE;
 }
 
+static void toggle_play_pause (GstElement *element)
+{
+    GstStateChangeReturn ret;
+    GstState current = GST_STATE_NULL, pending = GST_STATE_NULL;
+
+    ret = gst_element_get_state (element, &current, &pending, GST_CLOCK_TIME_NONE);
+
+    if (ret != GST_STATE_CHANGE_SUCCESS)
+        return;
+
+    if (current == GST_STATE_PAUSED) {
+        gst_element_set_state (element, GST_STATE_PLAYING);
+    }
+
+    if (current == GST_STATE_PLAYING)  {
+        gst_element_set_state (element, GST_STATE_PAUSED);
+    }
+}
+
 static gboolean on_key_released (GtkWidget *widget,
-                             GdkEvent *event,
-                             gpointer user_data)
+                                 GdkEvent *event,
+                                 gpointer user_data)
 {
     GdkEventKey *key_event = (GdkEventKey *) event;
+    MainData *data = (MainData *) user_data;
 
     switch (key_event->keyval) {
+        case GDK_KEY_space:
+            toggle_play_pause (data->playbin);
+
+            return FALSE;
         case GDK_KEY_Escape:
         case GDK_KEY_q:
         case GDK_KEY_Q:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]