summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2020-07-12 11:21:05 +0200
committerJens Georg <mail@jensge.org>2020-07-12 11:21:05 +0200
commit0a8d3437d89dca5d89efda8d714cf7fcf45e8d8a (patch)
tree10688653b8ce84a132d74abe0e81356bed6569fa /examples
parent2f6d96391b0b3d5914ca2b1a95dfae08de34e1a5 (diff)
downloadrygel-0a8d3437d89dca5d89efda8d714cf7fcf45e8d8a.tar.gz
examples: Add play/pause to space key
For fullscreen renderer
Diffstat (limited to 'examples')
-rw-r--r--examples/fullscreen-renderer.c28
1 files 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: