From 00474936e9e79a897489727aeda3221e95a8f081 Mon Sep 17 00:00:00 2001 From: Taylor Richards Date: Fri, 17 Jun 2016 01:15:23 -0400 Subject: [PATCH] simply fullscreen<->window switching --- include/2d.h | 5 +---- src/graphics/2d.cpp | 23 +++++++++++++++++------ src/graphics/grgl1.cpp | 4 ---- src/graphics/grgl2.cpp | 4 ---- src/graphics/gropengl.cpp | 23 +---------------------- src/graphics/grstub.cpp | 4 ---- src/graphics/grwxgl.cpp | 4 ---- 7 files changed, 19 insertions(+), 48 deletions(-) diff --git a/include/2d.h b/include/2d.h index 71bfd45..9b26da6 100644 --- a/include/2d.h +++ b/include/2d.h @@ -382,6 +382,7 @@ typedef struct screen { int bytes_per_pixel; // How many bytes per pixel (1,2,3,4) int offset_x, offset_y; // The offsets into the screen int clip_width, clip_height; + int fullscreen; float fog_near, fog_far; @@ -519,10 +520,6 @@ typedef struct screen { void (*gf_zbias)(int bias); - void (*gf_force_windowed)(); - void (*gf_force_fullscreen)(); - void (*gf_toggle_fullscreen)(); - void (*gf_set_viewport)(int width, int height); void (*gf_activate)(int active); diff --git a/src/graphics/2d.cpp b/src/graphics/2d.cpp index 208e453..fba929f 100644 --- a/src/graphics/2d.cpp +++ b/src/graphics/2d.cpp @@ -832,8 +832,12 @@ void gr_force_windowed() return; } - if (gr_screen.gf_force_windowed) { - (*gr_screen.gf_force_windowed)(); + + int rc = SDL_SetWindowFullscreen(os_get_window(), 0); + + if ( !rc ) { + gr_screen.fullscreen = 0; + SDL_SetRelativeMouseMode(SDL_FALSE); } if (Os_debugger_running) { @@ -847,8 +851,11 @@ void gr_force_fullscreen() return; } - if (gr_screen.gf_force_fullscreen) { - (*gr_screen.gf_force_fullscreen)(); + int rc = SDL_SetWindowFullscreen(os_get_window(), SDL_WINDOW_FULLSCREEN_DESKTOP); + + if ( !rc ) { + gr_screen.fullscreen = 1; + SDL_SetRelativeMouseMode(SDL_TRUE); } if (Os_debugger_running) { @@ -867,8 +874,12 @@ void gr_toggle_fullscreen() return; } - if (gr_screen.gf_toggle_fullscreen) { - (*gr_screen.gf_toggle_fullscreen)(); + Uint32 flags = SDL_GetWindowFlags( os_get_window() ); + + if (flags & SDL_WINDOW_FULLSCREEN_DESKTOP) { + gr_force_windowed(); + } else { + gr_force_fullscreen(); } if (Os_debugger_running) { diff --git a/src/graphics/grgl1.cpp b/src/graphics/grgl1.cpp index d713afb..51b287a 100644 --- a/src/graphics/grgl1.cpp +++ b/src/graphics/grgl1.cpp @@ -184,10 +184,6 @@ static void opengl1_init_func_pointers() gr_screen.gf_zbias = gr_opengl_zbias; - gr_screen.gf_force_windowed = gr_opengl_force_windowed; - gr_screen.gf_force_fullscreen = gr_opengl_force_fullscreen; - gr_screen.gf_toggle_fullscreen = gr_opengl_toggle_fullscreen; - gr_screen.gf_set_viewport = gr_opengl1_set_viewport; gr_screen.gf_activate = gr_opengl_activate; diff --git a/src/graphics/grgl2.cpp b/src/graphics/grgl2.cpp index d049abc..197403e 100644 --- a/src/graphics/grgl2.cpp +++ b/src/graphics/grgl2.cpp @@ -152,10 +152,6 @@ static void opengl2_init_func_pointers() gr_screen.gf_zbias = gr_opengl_zbias; - gr_screen.gf_force_windowed = gr_opengl_force_windowed; - gr_screen.gf_force_fullscreen = gr_opengl_force_fullscreen; - gr_screen.gf_toggle_fullscreen = gr_opengl_toggle_fullscreen; - gr_screen.gf_set_viewport = gr_opengl2_set_viewport; gr_screen.gf_activate = gr_opengl_activate; diff --git a/src/graphics/gropengl.cpp b/src/graphics/gropengl.cpp index 5a67648..719edcc 100644 --- a/src/graphics/gropengl.cpp +++ b/src/graphics/gropengl.cpp @@ -119,27 +119,6 @@ void opengl_stuff_fog_value(float z, float *f_val) *f_val = f_float; } -void gr_opengl_force_windowed() -{ - SDL_SetWindowFullscreen(GL_window, 0); -} - -void gr_opengl_force_fullscreen() -{ - SDL_SetWindowFullscreen(GL_window, SDL_WINDOW_FULLSCREEN_DESKTOP); -} - -void gr_opengl_toggle_fullscreen() -{ - Uint32 flags = SDL_GetWindowFlags(GL_window); - - if ( (flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP ) { - gr_opengl_force_windowed(); - } else { - gr_opengl_force_fullscreen(); - } -} - void gr_opengl_clear() { glClearColor(gr_screen.current_clear_color.red / 255.0f, @@ -339,7 +318,7 @@ void gr_opengl_init() // maybe go fullscreen - should be done *after* main GL init int fullscreen = os_config_read_uint("Video", "Fullscreen", 1); if ( !Cmdline_window && (fullscreen || Cmdline_fullscreen) ) { - SDL_SetWindowFullscreen(GL_window, SDL_WINDOW_FULLSCREEN_DESKTOP); + gr_force_fullscreen(); // poll for window events os_poll(); } diff --git a/src/graphics/grstub.cpp b/src/graphics/grstub.cpp index ed65141..e1bdb1e 100644 --- a/src/graphics/grstub.cpp +++ b/src/graphics/grstub.cpp @@ -149,10 +149,6 @@ void gr_stub_init() gr_screen.gf_zbias = stub_void_int; - gr_screen.gf_force_windowed = stub_void_void; - gr_screen.gf_force_fullscreen = stub_void_void; - gr_screen.gf_toggle_fullscreen = stub_void_void; - gr_screen.gf_set_viewport = stub_void_int2; gr_screen.gf_activate = stub_void_int; diff --git a/src/graphics/grwxgl.cpp b/src/graphics/grwxgl.cpp index ef198b4..398aa7e 100644 --- a/src/graphics/grwxgl.cpp +++ b/src/graphics/grwxgl.cpp @@ -87,10 +87,6 @@ static void wxgl_init_func_pointers() gr_screen.gf_zbias = gr_opengl_zbias; - gr_screen.gf_force_windowed = gr_opengl_force_windowed; - gr_screen.gf_force_fullscreen = gr_opengl_force_fullscreen; - gr_screen.gf_toggle_fullscreen = gr_opengl_toggle_fullscreen; - gr_screen.gf_set_viewport = gr_wxgl_set_viewport; gr_screen.gf_activate = gr_opengl_activate; -- 2.39.2