Fixed resolution switch
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/irrlicht@4116 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
10e039ba7e
commit
512f97a63b
@ -123,7 +123,11 @@ void AbstractStateManager::reshowTopMostMenu()
|
|||||||
assert(m_game_mode != GAME);
|
assert(m_game_mode != GAME);
|
||||||
|
|
||||||
// Send tear-down event to previous menu
|
// Send tear-down event to previous menu
|
||||||
if (m_menu_stack.size() > 0) getCurrentScreen()->tearDown();
|
if (m_menu_stack.size() > 0)
|
||||||
|
{
|
||||||
|
Screen* currScreen = getCurrentScreen();
|
||||||
|
if (currScreen != NULL) getCurrentScreen()->tearDown();
|
||||||
|
}
|
||||||
|
|
||||||
switchToScreen( m_menu_stack[m_menu_stack.size()-1].c_str() );
|
switchToScreen( m_menu_stack[m_menu_stack.size()-1].c_str() );
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ namespace GUIEngine
|
|||||||
using namespace Private;
|
using namespace Private;
|
||||||
|
|
||||||
ptr_vector<Widget, REF> needsUpdate;
|
ptr_vector<Widget, REF> needsUpdate;
|
||||||
ptr_vector<Screen, HOLD> g_loaded_screens;
|
ptr_vector<Screen, REF> g_loaded_screens;
|
||||||
|
|
||||||
float dt = 0;
|
float dt = 0;
|
||||||
|
|
||||||
@ -122,9 +122,12 @@ void reshowCurrentScreen()
|
|||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
void cleanUp()
|
void cleanUp()
|
||||||
{
|
{
|
||||||
if(g_skin != NULL) delete g_skin;
|
if (g_skin != NULL) delete g_skin;
|
||||||
g_skin = NULL;
|
g_skin = NULL;
|
||||||
g_loaded_screens.clearAndDeleteAll();
|
for (int i=0; i<g_loaded_screens.size(); i++)
|
||||||
|
{
|
||||||
|
g_loaded_screens[i].forgetWhatWasLoaded();
|
||||||
|
}
|
||||||
|
|
||||||
g_current_screen = NULL;
|
g_current_screen = NULL;
|
||||||
needsUpdate.clearWithoutDeleting();
|
needsUpdate.clearWithoutDeleting();
|
||||||
|
@ -59,6 +59,12 @@ Screen::Screen()
|
|||||||
m_render_3d = false;
|
m_render_3d = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Screen::forgetWhatWasLoaded()
|
||||||
|
{
|
||||||
|
m_loaded = false;
|
||||||
|
m_widgets.clearAndDeleteAll();
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Load/Init
|
#pragma mark Load/Init
|
||||||
|
@ -35,12 +35,18 @@ namespace GUIEngine
|
|||||||
template<typename SCREEN>
|
template<typename SCREEN>
|
||||||
class ScreenSingleton
|
class ScreenSingleton
|
||||||
{
|
{
|
||||||
public:
|
// Weird code to work around C++ (making it easy to use)
|
||||||
|
// Used to create, get and delete singleton instance
|
||||||
static SCREEN* getInstance()
|
static SCREEN* singletonOperate(bool deleteInstance=false)
|
||||||
{
|
{
|
||||||
static SCREEN* singleton = NULL;
|
static SCREEN* singleton = NULL;
|
||||||
|
|
||||||
|
if (deleteInstance && singleton != NULL)
|
||||||
|
{
|
||||||
|
singleton = NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (singleton == NULL)
|
if (singleton == NULL)
|
||||||
{
|
{
|
||||||
singleton = new SCREEN();
|
singleton = new SCREEN();
|
||||||
@ -49,6 +55,19 @@ namespace GUIEngine
|
|||||||
|
|
||||||
return singleton;
|
return singleton;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
~ScreenSingleton()
|
||||||
|
{
|
||||||
|
singletonOperate(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
static SCREEN* getInstance()
|
||||||
|
{
|
||||||
|
return singletonOperate();
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void parseScreenFileDiv(irr::io::IrrXMLReader* xml, ptr_vector<Widget>& append_to);
|
void parseScreenFileDiv(irr::io::IrrXMLReader* xml, ptr_vector<Widget>& append_to);
|
||||||
@ -84,6 +103,10 @@ namespace GUIEngine
|
|||||||
*/
|
*/
|
||||||
bool m_inited;
|
bool m_inited;
|
||||||
|
|
||||||
|
/** Next time this menu needs to be shown, don't use cached values, re-calculate everything.
|
||||||
|
(useful e.g. on reschange, when sizes have changed and must be re-calculated) */
|
||||||
|
void forgetWhatWasLoaded();
|
||||||
|
|
||||||
Screen(); /**< creates a dummy incomplete object; only use to override behaviour in sub-class */
|
Screen(); /**< creates a dummy incomplete object; only use to override behaviour in sub-class */
|
||||||
Screen(const char* filename);
|
Screen(const char* filename);
|
||||||
virtual ~Screen(){}
|
virtual ~Screen(){}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user