summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: ff0fabc)
raw | patch | inline | side by side (parent: ff0fabc)
author | Ketmar Dark <ketmar@ketmar.no-ip.org> | |
Tue, 6 Feb 2018 22:35:52 +0000 (00:35 +0200) | ||
committer | Ketmar Dark <ketmar@ketmar.no-ip.org> | |
Tue, 6 Feb 2018 22:36:23 +0000 (00:36 +0200) |
src/game/g_window.pas | patch | blob | history |
diff --git a/src/game/g_window.pas b/src/game/g_window.pas
index ab8df098b0be9534e5cec7279e0aa9533c9d0539..f7f06d89d2aa5e3fc8712b12f30d99e5c20cdbb9 100644 (file)
--- a/src/game/g_window.pas
+++ b/src/game/g_window.pas
flag: Boolean;
{$IF not DEFINED(HEADLESS)}
wTitle: PChar = nil;
+ wasFullscreen: Boolean = true; // so we need to recreate the window
+ wMaximized: Boolean = false;
{$ENDIF}
wNeedTimeReset: Boolean = false;
wMinimized: Boolean = false;
wFlags := SDL_WINDOW_OPENGL {or SDL_WINDOW_RESIZABLE};
if gFullscreen then wFlags := wFlags or SDL_WINDOW_FULLSCREEN else wFlags := wFlags or SDL_WINDOW_RESIZABLE;
- if (not gFullscreen) and gWinMaximized then wFlags := wFlags or SDL_WINDOW_MAXIMIZED;
+ if (not gFullscreen) and (not preserveGL) and gWinMaximized then wFlags := wFlags or SDL_WINDOW_MAXIMIZED else gWinMaximized := false;
if gFullscreen then
begin
end;
end;
- (*if (preserveGL) and (h_Wnd <> nil) {and (gFullscreen)} then
+ if (preserveGL) and (h_Wnd <> nil) and (not gFullscreen) and (not wasFullscreen) then
begin
- e_WriteLog('SDL: going fullscreen...', TMsgType.Notify);
//SDL_SetWindowMaximumSize(h_Wnd, gScreenWidth, gScreenHeight);
- SDL_SetWindowDisplayMode(h_Wnd, @cmode);
+ //SDL_SetWindowDisplayMode(h_Wnd, @cmode);
+ if (wMaximized) then SDL_RestoreWindow(h_Wnd);
+ wMaximized := false;
+ gWinMaximized := false;
SDL_SetWindowSize(h_Wnd, gScreenWidth, gScreenHeight);
- if (gFullscreen) then
- begin
- SDL_SetWindowFullscreen(h_Wnd, SDL_WINDOW_FULLSCREEN);
- end
- else
- begin
- SDL_SetWindowFullscreen(h_Wnd, 0);
- end;
+ //SDL_SetWindowFullscreen(h_Wnd, SDL_WINDOW_FULLSCREEN);
+ //SDL_SetWindowFullscreen(h_Wnd, 0);
end
- else*)
+ else
begin
KillGLWindow(preserveGL);
h_Wnd := SDL_CreateWindow(PChar(wTitle), gWinRealPosX, gWinRealPosY, gScreenWidth, gScreenHeight, wFlags);
if (h_Wnd = nil) then exit;
end;
+ wasFullscreen := gFullscreen;
SDL_GL_MakeCurrent(h_Wnd, h_GL);
SDL_ShowCursor(SDL_DISABLE);
SDL_WINDOWEVENT_MAXIMIZED:
begin
+ wMaximized := true;
if wMinimized then
begin
e_ResizeWindow(gScreenWidth, gScreenHeight);
SDL_WINDOWEVENT_RESTORED:
begin
+ wMaximized := false;
if wMinimized then
begin
e_ResizeWindow(gScreenWidth, gScreenHeight);