vo_gl/sdl: use desktop resolution for fullscreen mode

Before the SDL code would change screen resolution when switching to
fullscreen. Try to keep existing desktop resolution instead.
This commit is contained in:
wm4
2011-10-24 06:18:29 +03:00
committed by Uoti Urpala
parent bb8781a00a
commit f045abb4c0
3 changed files with 20 additions and 0 deletions
+2
View File
@@ -1961,6 +1961,7 @@ static int sdl_check_events(struct vo *vo)
return res;
}
static void new_sdl_update_xinerama_info(struct vo *vo) { sdl_update_xinerama_info(); }
static void new_vo_sdl_fullscreen(struct vo *vo) { vo_sdl_fullscreen(); }
#endif
@@ -2048,6 +2049,7 @@ MPGLContext *init_mpglcontext(enum MPGLType type, struct vo *vo)
SDL_Init(SDL_INIT_VIDEO);
ctx->setGlWindow = setGlWindow_sdl;
ctx->swapGlBuffers = swapGlBuffers_sdl;
ctx->update_xinerama_info = new_sdl_update_xinerama_info;
ctx->check_events = sdl_check_events;
ctx->fullscreen = new_vo_sdl_fullscreen;
//the SDL code is hardcoded to use the deprecated vo API
+17
View File
@@ -25,11 +25,13 @@
#include "input/keycodes.h"
#include "input/input.h"
#include "video_out.h"
#include "aspect.h"
static int old_w;
static int old_h;
static int mode_flags;
static int reinit;
static int screen_w, screen_h;
int vo_sdl_init(void)
{
@@ -39,6 +41,12 @@ int vo_sdl_init(void)
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE) < 0)
return 0;
if (screen_w == 0) {
const SDL_VideoInfo *vi = SDL_GetVideoInfo();
screen_w = vi->current_w;
screen_h = vi->current_h;
}
// Setup Keyrepeats (500/30 are defaults)
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 100 /*SDL_DEFAULT_REPEAT_INTERVAL*/);
@@ -59,6 +67,15 @@ void vo_sdl_uninit(void)
SDL_QuitSubSystem(SDL_INIT_VIDEO);
}
void sdl_update_xinerama_info(void)
{
if (vo_screenwidth <= 0 || vo_screenheight <= 0) {
vo_screenwidth = screen_w;
vo_screenheight = screen_h;
}
aspect_save_screenres(vo_screenwidth, vo_screenheight);
}
void vo_sdl_fullscreen(void)
{
if (vo_fs) {
+1
View File
@@ -30,6 +30,7 @@
int vo_sdl_init(void);
void vo_sdl_uninit(void);
void sdl_update_xinerama_info(void);
void vo_sdl_fullscreen(void);
int sdl_set_mode(int bpp, uint32_t flags);
int sdl_default_handle_event(SDL_Event *event);