diff options
author | Jens Georg <mail@jensge.org> | 2020-07-12 11:21:05 +0200 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2020-07-12 11:21:05 +0200 |
commit | 0a8d3437d89dca5d89efda8d714cf7fcf45e8d8a (patch) | |
tree | 10688653b8ce84a132d74abe0e81356bed6569fa /examples | |
parent | 2f6d96391b0b3d5914ca2b1a95dfae08de34e1a5 (diff) | |
download | rygel-0a8d3437d89dca5d89efda8d714cf7fcf45e8d8a.tar.gz |
examples: Add play/pause to space key
For fullscreen renderer
Diffstat (limited to 'examples')
-rw-r--r-- | examples/fullscreen-renderer.c | 28 |
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, ¤t, &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: |