Fixes two crashers for games, with GHOST under SDL:
- Fixes SDL fullscreen mode for game engine (blenderplayer). Mode switching (resolution changes) not supported yet though. - Fixes embedded game engine exit. See patch tracker [#29748].
This commit is contained in:
@@ -36,7 +36,7 @@ GHOST_DisplayManagerSDL::GHOST_DisplayManagerSDL(GHOST_SystemSDL *system)
|
||||
}
|
||||
|
||||
GHOST_TSuccess
|
||||
GHOST_DisplayManagerSDL::getNumDisplays(GHOST_TUns8& numDisplays)
|
||||
GHOST_DisplayManagerSDL::getNumDisplays(GHOST_TUns8& numDisplays) const
|
||||
{
|
||||
numDisplays= SDL_GetNumVideoDisplays();
|
||||
return GHOST_kSuccess;
|
||||
@@ -44,7 +44,7 @@ GHOST_DisplayManagerSDL::getNumDisplays(GHOST_TUns8& numDisplays)
|
||||
|
||||
|
||||
GHOST_TSuccess GHOST_DisplayManagerSDL::getNumDisplaySettings(GHOST_TUns8 display,
|
||||
GHOST_TInt32& numSettings)
|
||||
GHOST_TInt32& numSettings) const
|
||||
{
|
||||
GHOST_ASSERT(display < 1, "Only single display systems are currently supported.\n");
|
||||
numSettings= GHOST_TInt32(1);
|
||||
@@ -54,7 +54,7 @@ GHOST_TSuccess GHOST_DisplayManagerSDL::getNumDisplaySettings(GHOST_TUns8 displa
|
||||
GHOST_TSuccess
|
||||
GHOST_DisplayManagerSDL::getDisplaySetting(GHOST_TUns8 display,
|
||||
GHOST_TInt32 index,
|
||||
GHOST_DisplaySetting& setting)
|
||||
GHOST_DisplaySetting& setting) const
|
||||
{
|
||||
|
||||
GHOST_ASSERT(display < 1, "Only single display systems are currently supported.\n");
|
||||
@@ -74,7 +74,7 @@ GHOST_DisplayManagerSDL::getDisplaySetting(GHOST_TUns8 display,
|
||||
|
||||
GHOST_TSuccess
|
||||
GHOST_DisplayManagerSDL::getCurrentDisplaySetting(GHOST_TUns8 display,
|
||||
GHOST_DisplaySetting& setting)
|
||||
GHOST_DisplaySetting& setting) const
|
||||
{
|
||||
return getDisplaySetting(display,GHOST_TInt32(0),setting);
|
||||
}
|
||||
|
@@ -46,20 +46,20 @@ public:
|
||||
GHOST_DisplayManagerSDL(GHOST_SystemSDL *system);
|
||||
|
||||
GHOST_TSuccess
|
||||
getNumDisplays(GHOST_TUns8& numDisplays);
|
||||
getNumDisplays(GHOST_TUns8& numDisplays) const;
|
||||
|
||||
GHOST_TSuccess
|
||||
getNumDisplaySettings(GHOST_TUns8 display,
|
||||
GHOST_TInt32& numSettings);
|
||||
GHOST_TInt32& numSettings) const;
|
||||
|
||||
GHOST_TSuccess
|
||||
getDisplaySetting(GHOST_TUns8 display,
|
||||
GHOST_TInt32 index,
|
||||
GHOST_DisplaySetting& setting);
|
||||
GHOST_DisplaySetting& setting) const;
|
||||
|
||||
GHOST_TSuccess
|
||||
getCurrentDisplaySetting(GHOST_TUns8 display,
|
||||
GHOST_DisplaySetting& setting);
|
||||
GHOST_DisplaySetting& setting) const;
|
||||
|
||||
GHOST_TSuccess
|
||||
setCurrentDisplaySetting(GHOST_TUns8 display,
|
||||
|
@@ -132,6 +132,10 @@ if(WITH_SDL)
|
||||
)
|
||||
|
||||
add_definitions(-DWITH_SDL)
|
||||
|
||||
if(WITH_GHOST_SDL)
|
||||
add_definitions(-DWITH_GHOST_SDL)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
blender_add_lib(ge_logic "${SRC}" "${INC}" "${INC_SYS}")
|
||||
|
@@ -88,8 +88,14 @@ SCA_Joystick *SCA_Joystick::GetInstance( short int joyindex )
|
||||
if (m_refCount == 0)
|
||||
{
|
||||
int i;
|
||||
// do this once only
|
||||
// The video subsystem is required for joystick input to work. However,
|
||||
// when GHOST is running under SDL, video is initialised elsewhere.
|
||||
// Do this once only.
|
||||
# ifdef WITH_GHOST_SDL
|
||||
if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) == -1 ){
|
||||
# else
|
||||
if(SDL_InitSubSystem(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO) == -1 ){
|
||||
# endif
|
||||
echo("Error-Initializing-SDL: " << SDL_GetError());
|
||||
return NULL;
|
||||
}
|
||||
@@ -124,7 +130,14 @@ void SCA_Joystick::ReleaseInstance()
|
||||
m_instance[i]= NULL;
|
||||
}
|
||||
|
||||
// The video subsystem is required for joystick input to work. However,
|
||||
// when GHOST is running under SDL, video is freed elsewhere.
|
||||
// Do this once only.
|
||||
# ifdef WITH_GHOST_SDL
|
||||
SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
|
||||
# else
|
||||
SDL_QuitSubSystem(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO);
|
||||
# endif
|
||||
#endif /* WITH_SDL */
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user