small additions: vga override, lazy fullscreen switching, pci read override
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3768
This commit is contained in:
parent
41d307292b
commit
77970d28cd
5 changed files with 100 additions and 9 deletions
|
@ -171,6 +171,8 @@ struct SDL_Block {
|
|||
} window;
|
||||
Bit8u bpp;
|
||||
bool fullscreen;
|
||||
bool lazy_fullscreen;
|
||||
bool lazy_fullscreen_req;
|
||||
bool doublebuf;
|
||||
SCREEN_TYPES type;
|
||||
SCREEN_TYPES want_type;
|
||||
|
@ -353,6 +355,16 @@ void GFX_ResetScreen(void) {
|
|||
CPU_Reset_AutoAdjust();
|
||||
}
|
||||
|
||||
void GFX_ForceFullscreenExit(void) {
|
||||
if (sdl.desktop.lazy_fullscreen) {
|
||||
// sdl.desktop.lazy_fullscreen_req=true;
|
||||
LOG_MSG("GFX LF: invalid screen change");
|
||||
} else {
|
||||
sdl.desktop.fullscreen=false;
|
||||
GFX_ResetScreen();
|
||||
}
|
||||
}
|
||||
|
||||
static int int_log2 (int val) {
|
||||
int log = 0;
|
||||
while ((val >>= 1) != 0)
|
||||
|
@ -405,6 +417,16 @@ static SDL_Surface * GFX_SetupSurfaceScaled(Bit32u sdl_flags, Bit32u bpp) {
|
|||
}
|
||||
}
|
||||
|
||||
void GFX_TearDown(void) {
|
||||
if (sdl.updating)
|
||||
GFX_EndUpdate( 0 );
|
||||
|
||||
if (sdl.blit.surface) {
|
||||
SDL_FreeSurface(sdl.blit.surface);
|
||||
sdl.blit.surface=0;
|
||||
}
|
||||
}
|
||||
|
||||
Bitu GFX_SetSize(Bitu width,Bitu height,Bitu flags,double scalex,double scaley,GFX_CallBack_t callback) {
|
||||
if (sdl.updating)
|
||||
GFX_EndUpdate( 0 );
|
||||
|
@ -670,6 +692,18 @@ void GFX_CaptureMouse(void) {
|
|||
mouselocked=sdl.mouse.locked;
|
||||
}
|
||||
|
||||
void GFX_UpdateSDLCaptureState(void) {
|
||||
if (sdl.mouse.locked) {
|
||||
SDL_WM_GrabInput(SDL_GRAB_ON);
|
||||
SDL_ShowCursor(SDL_DISABLE);
|
||||
} else {
|
||||
SDL_WM_GrabInput(SDL_GRAB_OFF);
|
||||
if (sdl.mouse.autoenable || !sdl.mouse.autolock) SDL_ShowCursor(SDL_ENABLE);
|
||||
}
|
||||
CPU_Reset_AutoAdjust();
|
||||
GFX_SetTitle(-1,-1,false);
|
||||
}
|
||||
|
||||
bool mouselocked; //Global variable for mapper
|
||||
static void CaptureMouse(bool pressed) {
|
||||
if (!pressed)
|
||||
|
@ -718,7 +752,32 @@ void GFX_SwitchFullScreen(void) {
|
|||
static void SwitchFullScreen(bool pressed) {
|
||||
if (!pressed)
|
||||
return;
|
||||
GFX_SwitchFullScreen();
|
||||
|
||||
if (sdl.desktop.lazy_fullscreen) {
|
||||
// sdl.desktop.lazy_fullscreen_req=true;
|
||||
LOG_MSG("GFX LF: fullscreen switching not supported");
|
||||
} else {
|
||||
GFX_SwitchFullScreen();
|
||||
}
|
||||
}
|
||||
|
||||
void GFX_SwitchLazyFullscreen(bool lazy) {
|
||||
sdl.desktop.lazy_fullscreen=lazy;
|
||||
sdl.desktop.lazy_fullscreen_req=false;
|
||||
}
|
||||
|
||||
void GFX_SwitchFullscreenNoReset(void) {
|
||||
sdl.desktop.fullscreen=!sdl.desktop.fullscreen;
|
||||
}
|
||||
|
||||
bool GFX_LazyFullscreenRequested(void) {
|
||||
if (sdl.desktop.lazy_fullscreen) return sdl.desktop.lazy_fullscreen_req;
|
||||
return false;
|
||||
}
|
||||
|
||||
void GFX_RestoreMode(void) {
|
||||
GFX_SetSize(sdl.draw.width,sdl.draw.height,sdl.draw.flags,sdl.draw.scalex,sdl.draw.scaley,sdl.draw.callback);
|
||||
GFX_UpdateSDLCaptureState();
|
||||
}
|
||||
|
||||
|
||||
|
@ -1035,6 +1094,9 @@ static void GUI_StartUp(Section * sec) {
|
|||
SDL_WM_SetIcon(logos,NULL);
|
||||
#endif
|
||||
|
||||
sdl.desktop.lazy_fullscreen=false;
|
||||
sdl.desktop.lazy_fullscreen_req=false;
|
||||
|
||||
sdl.desktop.fullscreen=section->Get_bool("fullscreen");
|
||||
sdl.wait_on_error=section->Get_bool("waitonerror");
|
||||
|
||||
|
@ -1339,6 +1401,10 @@ void GFX_LosingFocus(void) {
|
|||
MAPPER_LosingFocus();
|
||||
}
|
||||
|
||||
bool GFX_IsFullscreen(void) {
|
||||
return sdl.desktop.fullscreen;
|
||||
}
|
||||
|
||||
void GFX_Events() {
|
||||
SDL_Event event;
|
||||
#if defined (REDUCE_JOYSTICK_POLLING)
|
||||
|
@ -1364,8 +1430,7 @@ void GFX_Events() {
|
|||
#ifdef WIN32
|
||||
if (sdl.desktop.fullscreen) {
|
||||
VGA_KillDrawing();
|
||||
sdl.desktop.fullscreen=false;
|
||||
GFX_ResetScreen();
|
||||
GFX_ForceFullscreenExit();
|
||||
}
|
||||
#endif
|
||||
GFX_CaptureMouse();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue