[Spice-devel] [PATCH spice-gtk] spice-widget: Make sure we can use X11 from different thread

Snir Sheriber ssheribe at redhat.com
Mon Nov 26 09:39:15 UTC 2018


Hi,

On 11/26/18 10:16 AM, Frediano Ziglio wrote:
> In order to support GStreamer overlay this is necessary as some
> plugins can use X11 from a different thread.
>
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>   src/spice-widget.c | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
>
> CI result:
> https://gitlab.freedesktop.org/fziglio/spice-gtk/pipelines/9559
>
> diff --git a/src/spice-widget.c b/src/spice-widget.c
> index 312c640a..cca0867e 100644
> --- a/src/spice-widget.c
> +++ b/src/spice-widget.c
> @@ -2547,6 +2547,19 @@ static void queue_draw_area(SpiceDisplay *display, gint x, gint y,
>                                  x, y, width, height);
>   }
>   
> +#ifdef GDK_WINDOWING_X11
> +/* See https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/GstGLDisplay.html
> + * (look for XInitThreads). We call it into a constructor to make sure
> + * we call before any X11 function.
> + * In case of GStreamer some plugins will use X11 from different
> + * threads.
> + */
> +SPICE_CONSTRUCTOR_FUNC(x11_threads_init)
> +{
> +    XInitThreads();
> +}
> +#endif
> +


So, I'd ack but i still have two small worries 1. would it harm to call 
it also when it's not really needed?

2. Wouldn't be more correct to call it by gtk/gdk interface (i think 
teuf has mentioned such function)


Thanks, Snir.


>   static void* prepare_streaming_mode(SpiceChannel *channel, bool streaming_mode, gpointer data)
>   {
>   #ifdef GDK_WINDOWING_X11


More information about the Spice-devel mailing list