diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/ximage/ximagesink.c | 9 | ||||
-rw-r--r-- | sys/xvimage/xvimagesink.c | 8 |
2 files changed, 11 insertions, 6 deletions
diff --git a/sys/ximage/ximagesink.c b/sys/ximage/ximagesink.c index 788121fa..5e81ff65 100644 --- a/sys/ximage/ximagesink.c +++ b/sys/ximage/ximagesink.c @@ -967,11 +967,14 @@ gst_ximagesink_handle_xevents (GstXImageSink * ximagesink) e.xkey.keycode, 0); g_mutex_unlock (ximagesink->x_lock); if (keysym != NoSymbol) { + char *key_str = NULL; + g_mutex_lock (ximagesink->x_lock); - gst_navigation_send_key_event (GST_NAVIGATION (ximagesink), - e.type == KeyPress ? - "key-press" : "key-release", XKeysymToString (keysym)); + key_str = XKeysymToString (keysym); g_mutex_unlock (ximagesink->x_lock); + gst_navigation_send_key_event (GST_NAVIGATION (ximagesink), + e.type == KeyPress ? "key-press" : "key-release", key_str); + } else { gst_navigation_send_key_event (GST_NAVIGATION (ximagesink), e.type == KeyPress ? "key-press" : "key-release", "unknown"); diff --git a/sys/xvimage/xvimagesink.c b/sys/xvimage/xvimagesink.c index 7906a4f6..b847ccfc 100644 --- a/sys/xvimage/xvimagesink.c +++ b/sys/xvimage/xvimagesink.c @@ -1092,11 +1092,13 @@ gst_xvimagesink_handle_xevents (GstXvImageSink * xvimagesink) e.xkey.keycode, 0); g_mutex_unlock (xvimagesink->x_lock); if (keysym != NoSymbol) { + char *key_str = NULL; + g_mutex_lock (xvimagesink->x_lock); - gst_navigation_send_key_event (GST_NAVIGATION (xvimagesink), - e.type == KeyPress ? - "key-press" : "key-release", XKeysymToString (keysym)); + key_str = XKeysymToString (keysym); g_mutex_unlock (xvimagesink->x_lock); + gst_navigation_send_key_event (GST_NAVIGATION (xvimagesink), + e.type == KeyPress ? "key-press" : "key-release", key_str); } else { gst_navigation_send_key_event (GST_NAVIGATION (xvimagesink), e.type == KeyPress ? "key-press" : "key-release", "unknown"); |