mirror of
https://github.com/mpv-player/mpv.git
synced 2026-10-24 20:20:18 +08:00
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:
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user