Commit 496b4187 authored by Thomas Guillem's avatar Thomas Guillem Committed by Hugo Beauzée-Luyssen

video_output: display: Don't ignore fullscreen state changes

Signed-off-by: default avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
parent d4bd6f62
......@@ -362,9 +362,10 @@ static inline void vout_display_SendEventKey(vout_display_t *vd, int key)
{
vout_display_SendEvent(vd, VOUT_DISPLAY_EVENT_KEY, key);
}
static inline void vout_display_SendEventFullscreen(vout_display_t *vd, bool is_fullscreen)
static inline void vout_display_SendEventFullscreen(vout_display_t *vd, bool is_fullscreen,
bool is_window_fullscreen)
{
vout_display_SendEvent(vd, VOUT_DISPLAY_EVENT_FULLSCREEN, is_fullscreen);
vout_display_SendEvent(vd, VOUT_DISPLAY_EVENT_FULLSCREEN, is_fullscreen, is_window_fullscreen);
}
#if defined(_WIN32)
static inline void vout_display_SendWindowState(vout_display_t *vd, unsigned state)
......
......@@ -117,7 +117,7 @@ int CommonInit(vout_display_t *vd)
if (vd->cfg->is_fullscreen) {
if (CommonControlSetFullscreen(vd, true))
vout_display_SendEventFullscreen(vd, false);
vout_display_SendEventFullscreen(vd, false, false);
}
DisableScreensaver (vd);
......
......@@ -305,7 +305,7 @@ static int Open(vlc_object_t *object)
/* Fix state in case of desktop mode */
if (sys->sys.use_desktop && vd->cfg->is_fullscreen)
vout_display_SendEventFullscreen(vd, false);
vout_display_SendEventFullscreen(vd, false, false);
return VLC_SUCCESS;
error:
......@@ -615,13 +615,13 @@ static int ControlReopenDevice(vout_display_t *vd)
if (sys->sys.use_desktop) {
/* Disable fullscreen/on_top while using desktop */
if (sys->desktop_save.is_fullscreen)
vout_display_SendEventFullscreen(vd, false);
vout_display_SendEventFullscreen(vd, false, false);
if (sys->desktop_save.is_on_top)
vout_display_SendWindowState(vd, VOUT_WINDOW_STATE_NORMAL);
} else {
/* Restore fullscreen/on_top */
if (sys->desktop_save.is_fullscreen)
vout_display_SendEventFullscreen(vd, true);
vout_display_SendEventFullscreen(vd, true, false);
if (sys->desktop_save.is_on_top)
vout_display_SendWindowState(vd, VOUT_WINDOW_STATE_ABOVE);
}
......
......@@ -396,6 +396,7 @@ typedef struct {
bool ch_fullscreen;
bool is_fullscreen;
bool window_fullscreen;
bool ch_display_size;
int display_width;
......@@ -655,6 +656,7 @@ static void VoutDisplayEvent(vout_display_t *vd, int event, va_list args)
case VOUT_DISPLAY_EVENT_FULLSCREEN: {
const int is_fullscreen = (int)va_arg(args, int);
const bool window_fullscreen = va_arg(args, int);
msg_Dbg(vd, "VoutDisplayEvent 'fullscreen' %d", is_fullscreen);
......@@ -662,6 +664,7 @@ static void VoutDisplayEvent(vout_display_t *vd, int event, va_list args)
if (!is_fullscreen != !osys->is_fullscreen) {
osys->ch_fullscreen = true;
osys->is_fullscreen = is_fullscreen;
osys->window_fullscreen = window_fullscreen;
}
vlc_mutex_unlock(&osys->lock);
break;
......@@ -860,11 +863,12 @@ bool vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures)
/* */
if (ch_fullscreen) {
if (vout_display_Control(vd, VOUT_DISPLAY_CHANGE_FULLSCREEN,
if (osys->window_fullscreen
|| vout_display_Control(vd, VOUT_DISPLAY_CHANGE_FULLSCREEN,
is_fullscreen) == VLC_SUCCESS) {
osys->cfg.is_fullscreen = is_fullscreen;
if (!is_fullscreen)
if (!is_fullscreen && !osys->window_fullscreen)
vout_SetDisplayWindowSize(osys->vout, osys->width_saved,
osys->height_saved);
} else {
......
......@@ -1316,11 +1316,12 @@ static void ThreadChangeFullscreen(vout_thread_t *vout, bool fullscreen)
{
vout_window_t *window = vout->p->window;
if (window != NULL)
vout_window_SetFullScreen(window, fullscreen);
else
bool window_fullscreen = false;
if (window != NULL
&& vout_window_SetFullScreen(window, fullscreen) == VLC_SUCCESS)
window_fullscreen = true;
if (vout->p->display.vd != NULL)
vout_display_SendEventFullscreen(vout->p->display.vd, fullscreen);
vout_display_SendEventFullscreen(vout->p->display.vd, fullscreen, window_fullscreen);
}
static void ThreadChangeWindowState(vout_thread_t *vout, unsigned state)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment