Browse Source

vout/window: add new dimensions to resize ack

Rémi Denis-Courmont 5 years ago
committed by Alexandre Janniaux
parent
commit
8a78b7f2f3
  1. 7
      include/vlc_vout_window.h
  2. 2
      modules/video_output/splitter.c
  3. 5
      modules/video_output/wayland/xdg-shell.c
  4. 2
      src/video_output/opengl.c
  5. 7
      src/video_output/window.c

7
include/vlc_vout_window.h

@ -186,8 +186,13 @@ typedef struct vout_window_cfg_t {
/**
* Callback prototype for window event acknowledgement.
*
* @param width pixel width as supplied to vout_window_callbacks::resized
* @param height pixel height as supplied to vout_window_callbacks::resized
* @param data opaque pointer as supplied to vout_window_callbacks::resized
*/
typedef void (*vout_window_ack_cb)(struct vout_window_t *, void *);
typedef void (*vout_window_ack_cb)(struct vout_window_t *, unsigned width,
unsigned height, void *data);
/**
* Window event callbacks structure.

2
modules/video_output/splitter.c

@ -148,7 +148,7 @@ static void vlc_vidsplit_window_Resized(vout_window_t *wnd,
vout_display_SetSize(part->display, width, height);
if (cb != NULL)
cb(wnd, opaque);
cb(wnd, width, height, opaque);
vlc_sem_post(&part->lock);
}

5
modules/video_output/wayland/xdg-shell.c

@ -157,7 +157,8 @@ static void *Thread(void *data)
//return NULL;
}
static void ResizeAck(vout_window_t *wnd, void *data)
static void ResizeAck(vout_window_t *wnd, unsigned width, unsigned height,
void *data)
{
#ifdef XDG_SHELL
vout_window_sys_t *sys = wnd->sys;
@ -166,7 +167,7 @@ static void ResizeAck(vout_window_t *wnd, void *data)
if (serial != NULL)
xdg_surface_ack_configure(sys->surface, *serial);
#else
(void) wnd; (void) data;
(void) wnd; (void) width; (void) height; (void) data;
#endif
}

2
src/video_output/opengl.c

@ -196,7 +196,7 @@ static void vlc_gl_surface_ResizeNotify(vout_window_t *surface,
sys->height = height;
if (cb != NULL)
cb(surface, opaque);
cb(surface, width, height, opaque);
vlc_mutex_unlock(&sys->lock);
}

7
src/video_output/window.c

@ -201,6 +201,8 @@ void vout_window_ReportFullscreen(vout_window_t *window, const char *id)
struct vout_window_ack_data {
vout_window_t *window;
vout_window_ack_cb callback;
unsigned width;
unsigned height;
void *opaque;
};
@ -209,7 +211,8 @@ static void vout_window_Ack(void *data)
struct vout_window_ack_data *cb_data = data;
if (cb_data->callback != NULL)
cb_data->callback(cb_data->window, cb_data->opaque);
cb_data->callback(cb_data->window, cb_data->width, cb_data->height,
cb_data->opaque);
}
/* Video output display integration */
@ -234,7 +237,7 @@ static void vout_display_window_ResizeNotify(vout_window_t *window,
{
vout_display_window_t *state = window->owner.sys;
vout_thread_t *vout = state->vout;
struct vout_window_ack_data data = { window, cb, opaque };
struct vout_window_ack_data data = { window, cb, width, height, opaque };
msg_Dbg(window, "resized to %ux%u", width, height);
vout_ChangeDisplaySize(vout, width, height, vout_window_Ack, &data);

Loading…
Cancel
Save