[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