[vlc-devel] [PATCH 1/3] window: add has_shared_egl info flag

Alexandre Janniaux ajanni at videolabs.io
Tue Oct 1 09:12:30 CEST 2019


Hi,

Are they any additional remarks on the patchset ?

Regards,
--
Alexandre Janniaux
Videolabs

On Thu, Sep 26, 2019 at 11:04:39AM +0200, Alexandre Janniaux wrote:
> UI integration of the video might need shared display, for instance with
> wayland. When the display connection is shared, calling eglTerminate
> will destroy every other context. The `has_shared_egl` flag prevents
> this by notifying the possible EGL clients of the window that they
> should not terminate the EGLDisplay themselves.
> ---
>  include/vlc_vout_window.h | 15 +++++++++++++++
>  src/video_output/window.c |  1 +
>  2 files changed, 16 insertions(+)
>
> diff --git a/include/vlc_vout_window.h b/include/vlc_vout_window.h
> index 9116fa65614..10cdc410e51 100644
> --- a/include/vlc_vout_window.h
> +++ b/include/vlc_vout_window.h
> @@ -381,6 +381,21 @@ typedef struct vout_window_t {
>      struct {
>          bool has_double_click; /**< Whether double click events are sent,
>                                      or need to be emulated */
> +        /**
> +         * Define whether EGL is used elsewhere within the same display.
> +         *
> +         * When this flag is set to `true`, the underlying opengl providers
> +         * won't terminate EGLDisplay, so the other clients are expected to
> +         * terminate the EGLDisplay after all VLC OpenGL providers linked to
> +         * this EGLDisplay have been closed.
> +         *
> +         * \remark {
> +         *   The main reason for this flags is to allow embedding a video into
> +         *   a client UI which would be using EGL, whenever the window display
> +         *   needs to be the same between both the UI and the video.
> +         *   In particular, it would happen with Wayland and a QML client. }
> +         * */
> +        bool has_shared_egl;
>      } info;
>
>      /* Private place holder for the vout_window_t module (optional)
> diff --git a/src/video_output/window.c b/src/video_output/window.c
> index 16ebf9ef5a2..363f5f21854 100644
> --- a/src/video_output/window.c
> +++ b/src/video_output/window.c
> @@ -67,6 +67,7 @@ vout_window_t *vout_window_New(vlc_object_t *obj, const char *module,
>
>      memset(&window->handle, 0, sizeof(window->handle));
>      window->info.has_double_click = false;
> +    window->info.has_shared_egl = false;
>      window->sys = NULL;
>      assert(owner != NULL);
>      window->owner = *owner;
> --
> 2.23.0


More information about the vlc-devel mailing list