Attempt to recover from true fullscreen failing.
This commit is contained in:
parent
e13ccc559a
commit
45a5895abf
|
@ -256,17 +256,23 @@ static bool gfx_ctx_set_video_mode(
|
|||
g_win = XCreateWindow(g_dpy, RootWindow(g_dpy, vi->screen),
|
||||
0, 0, width ? width : 200, height ? height : 200, 0,
|
||||
vi->depth, InputOutput, vi->visual,
|
||||
CWBorderPixel | CWColormap | CWEventMask | (fullscreen ? CWOverrideRedirect : 0), &swa);
|
||||
CWBorderPixel | CWColormap | CWEventMask | (fullscreen && g_should_reset_mode ? CWOverrideRedirect : 0), &swa);
|
||||
XSetWindowBackground(g_dpy, g_win, 0);
|
||||
|
||||
gfx_ctx_update_window_title(true);
|
||||
x11_hide_mouse(g_dpy, g_win);
|
||||
|
||||
if (fullscreen)
|
||||
if (fullscreen && g_should_reset_mode)
|
||||
{
|
||||
XMapRaised(g_dpy, g_win);
|
||||
XGrabKeyboard(g_dpy, g_win, True, GrabModeAsync, GrabModeAsync, CurrentTime);
|
||||
}
|
||||
else if (fullscreen) // We attempted true fullscreen, but failed. Attempt using windowed fullscreen.
|
||||
{
|
||||
XMapRaised(g_dpy, g_win);
|
||||
RARCH_WARN("[GLX]: True fullscreen failed. Attempt using windowed fullscreen instead.\n");
|
||||
x11_windowed_fullscreen(g_dpy, g_win);
|
||||
}
|
||||
else
|
||||
XMapWindow(g_dpy, g_win);
|
||||
|
||||
|
|
|
@ -123,9 +123,13 @@ bool x11_enter_fullscreen(Display *dpy, unsigned width, unsigned height, XF86Vid
|
|||
XF86VidModeModeInfo mode;
|
||||
if (get_video_mode(dpy, width, height, &mode, desktop_mode))
|
||||
{
|
||||
XF86VidModeSwitchToMode(dpy, DefaultScreen(dpy), &mode);
|
||||
XF86VidModeSetViewPort(dpy, DefaultScreen(dpy), 0, 0);
|
||||
return true;
|
||||
if (XF86VidModeSwitchToMode(dpy, DefaultScreen(dpy), &mode))
|
||||
{
|
||||
XF86VidModeSetViewPort(dpy, DefaultScreen(dpy), 0, 0);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
|
|
@ -285,7 +285,7 @@ static bool gfx_ctx_set_video_mode(
|
|||
g_win = XCreateWindow(g_dpy, RootWindow(g_dpy, vi->screen),
|
||||
0, 0, width ? width : 200, height ? height : 200, 0,
|
||||
vi->depth, InputOutput, vi->visual,
|
||||
CWBorderPixel | CWColormap | CWEventMask | (fullscreen ? CWOverrideRedirect : 0), &swa);
|
||||
CWBorderPixel | CWColormap | CWEventMask | (fullscreen && g_should_reset_mode ? CWOverrideRedirect : 0), &swa);
|
||||
XSetWindowBackground(g_dpy, g_win, 0);
|
||||
|
||||
// GLES 2.0. Don't use for any other API.
|
||||
|
@ -310,11 +310,17 @@ static bool gfx_ctx_set_video_mode(
|
|||
gfx_ctx_update_window_title(true);
|
||||
x11_hide_mouse(g_dpy, g_win);
|
||||
|
||||
if (fullscreen)
|
||||
if (fullscreen && g_should_reset_mode)
|
||||
{
|
||||
XMapRaised(g_dpy, g_win);
|
||||
XGrabKeyboard(g_dpy, g_win, True, GrabModeAsync, GrabModeAsync, CurrentTime);
|
||||
}
|
||||
else if (fullscreen) // We attempted true fullscreen, but failed. Attempt using windowed fullscreen.
|
||||
{
|
||||
XMapRaised(g_dpy, g_win);
|
||||
RARCH_WARN("[X/EGL]: True fullscreen failed. Attempt using windowed fullscreen instead.\n");
|
||||
x11_windowed_fullscreen(g_dpy, g_win);
|
||||
}
|
||||
else
|
||||
XMapWindow(g_dpy, g_win);
|
||||
|
||||
|
|
Loading…
Reference in New Issue