[vlc-devel] [PATCH] vout display window: store vout in window state

Steve Lhomme robux4 at ycbcr.xyz
Wed Jun 12 08:23:31 CEST 2019


LGTM

On 2019-06-11 17:18, Alexandre Janniaux wrote:
> Store vout_thread in window display state instead of getting it from
> casting vlc_object_parent.
> ---
>   src/video_output/window.c | 37 ++++++++++++++++++++++++++-----------
>   1 file changed, 26 insertions(+), 11 deletions(-)
> 
> diff --git a/src/video_output/window.c b/src/video_output/window.c
> index 99a6d62454..48cd109745 100644
> --- a/src/video_output/window.c
> +++ b/src/video_output/window.c
> @@ -210,6 +210,7 @@ void vout_window_ReportFullscreen(vout_window_t *window, const char *id)
>   
>   typedef struct vout_display_window
>   {
> +    vout_thread_t *vout;
>       vlc_mouse_t mouse;
>       vlc_tick_t last_left_press;
>   } vout_display_window_t;
> @@ -217,7 +218,8 @@ typedef struct vout_display_window
>   static void vout_display_window_ResizeNotify(vout_window_t *window,
>                                                unsigned width, unsigned height)
>   {
> -    vout_thread_t *vout = (vout_thread_t *)vlc_object_parent(window);
> +    vout_display_window_t *state = window->owner.sys;
> +    vout_thread_t *vout = state->vout;
>   
>       msg_Dbg(window, "resized to %ux%u", width, height);
>       vout_ChangeDisplaySize(vout, width, height);
> @@ -231,40 +233,49 @@ static void vout_display_window_CloseNotify(vout_window_t *window)
>   }
>   
>   static void vout_display_window_StateNotify(vout_window_t *window,
> -                                            unsigned state)
> +                                            unsigned window_state)
>   {
> +    vout_display_window_t *state = window->owner.sys;
> +    vout_thread_t *vout = state->vout;
> +
>       static const char states[][8] = {
>           [VOUT_WINDOW_STATE_NORMAL] = "normal",
>           [VOUT_WINDOW_STATE_ABOVE] = "above",
>           [VOUT_WINDOW_STATE_BELOW] = "below",
>       };
>   
> -    assert(state < ARRAY_SIZE(states));
> -    msg_Dbg(window, "window state changed: %s", states[state]);
> -    var_SetInteger(vlc_object_parent(window), "window-state", state);
> +    assert(window_state < ARRAY_SIZE(states));
> +    msg_Dbg(window, "window state changed: %s", states[window_state]);
> +    var_SetInteger(vout, "window-state", window_state);
>   }
>   
>   static void vout_display_window_FullscreenNotify(vout_window_t *window,
>                                                    const char *id)
>   {
> +    vout_display_window_t *state = window->owner.sys;
> +    vout_thread_t *vout = state->vout;
> +
>       msg_Dbg(window, (id != NULL) ? "window set to fullscreen on %s"
>                                    : "window set to fullscreen", id);
> -    var_SetString(vlc_object_parent(window), "window-fullscreen-output",
> +    var_SetString(vout, "window-fullscreen-output",
>                     (id != NULL) ? id : "");
> -    var_SetBool(vlc_object_parent(window), "window-fullscreen", true);
> +    var_SetBool(vout, "window-fullscreen", true);
>   }
>   
>   static void vout_display_window_WindowingNotify(vout_window_t *window)
>   {
> +    vout_display_window_t *state = window->owner.sys;
> +    vout_thread_t *vout = state->vout;
> +
>       msg_Dbg(window, "window set windowed");
> -    var_SetBool(vlc_object_parent(window), "window-fullscreen", false);
> +    var_SetBool(vout, "window-fullscreen", false);
>   }
>   
>   static void vout_display_window_MouseEvent(vout_window_t *window,
>                                              const vout_window_mouse_event_t *ev)
>   {
>       vout_display_window_t *state = window->owner.sys;
> -    vout_thread_t *vout = (vout_thread_t *)vlc_object_parent(window);
> +    vout_thread_t *vout = state->vout;
>       vlc_mouse_t *m = &state->mouse;
>   
>       m->b_double_click = false;
> @@ -315,7 +326,10 @@ static void vout_display_window_MouseEvent(vout_window_t *window,
>   static void vout_display_window_KeyboardEvent(vout_window_t *window,
>                                                 unsigned key)
>   {
> -    var_SetInteger(vlc_object_instance(window), "key-pressed", key);
> +    vout_display_window_t *state = window->owner.sys;
> +    vout_thread_t *vout = state->vout;
> +
> +    var_SetInteger(vout, "key-pressed", key);
>   }
>   
>   static void vout_display_window_OutputEvent(vout_window_t *window,
> @@ -349,6 +363,7 @@ vout_window_t *vout_display_window_New(vout_thread_t *vout)
>   
>       vlc_mouse_Init(&state->mouse);
>       state->last_left_press = INT64_MIN;
> +    state->vout = vout;
>   
>       char *modlist = var_InheritString(vout, "window");
>       vout_window_owner_t owner = {
> @@ -374,8 +389,8 @@ vout_window_t *vout_display_window_New(vout_thread_t *vout)
>    */
>   void vout_display_window_Delete(vout_window_t *window)
>   {
> -    vout_thread_t *vout = (vout_thread_t *)vlc_object_parent(window);
>       vout_display_window_t *state = window->owner.sys;
> +    vout_thread_t *vout = state->vout;
>   
>       vout_window_Delete(window);
>       var_Destroy(vout, "window-fullscreen-output");
> -- 
> 2.20.1
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
> 


More information about the vlc-devel mailing list