Navigation Menu

Skip to content

Commit

Permalink
Allow SIGINT to kill mainmenu again
Browse files Browse the repository at this point in the history
  • Loading branch information
kahrl committed Aug 19, 2013
1 parent 4242782 commit ade70fe
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 15 deletions.
6 changes: 4 additions & 2 deletions src/guiEngine.cpp
Expand Up @@ -79,7 +79,8 @@ GUIEngine::GUIEngine( irr::IrrlichtDevice* dev,
gui::IGUIElement* parent,
IMenuManager *menumgr,
scene::ISceneManager* smgr,
MainMenuData* data) :
MainMenuData* data,
bool& kill) :
m_device(dev),
m_parent(parent),
m_menumanager(menumgr),
Expand All @@ -89,6 +90,7 @@ GUIEngine::GUIEngine( irr::IrrlichtDevice* dev,
m_formspecgui(0),
m_buttonhandler(0),
m_menu(0),
m_kill(kill),
m_startgame(false),
m_script(0),
m_scriptdir(""),
Expand Down Expand Up @@ -219,7 +221,7 @@ void GUIEngine::run()

cloudInit();

while(m_device->run() && (!m_startgame)) {
while(m_device->run() && (!m_startgame) && (!m_kill)) {
driver->beginScene(true, true, video::SColor(255,140,186,250));

if (m_clouds_enabled)
Expand Down
6 changes: 5 additions & 1 deletion src/guiEngine.h
Expand Up @@ -109,7 +109,8 @@ class GUIEngine {
gui::IGUIElement* parent,
IMenuManager *menumgr,
scene::ISceneManager* smgr,
MainMenuData* data);
MainMenuData* data,
bool& kill);

/** default destructor */
virtual ~GUIEngine();
Expand Down Expand Up @@ -159,6 +160,9 @@ class GUIEngine {
/** the formspec menu */
GUIFormSpecMenu* m_menu;

/** reference to kill variable managed by SIGINT handler */
bool& m_kill;

/** variable used to abort menu and return back to main game handling */
bool m_startgame;

Expand Down
3 changes: 0 additions & 3 deletions src/guiMainMenu.h
Expand Up @@ -49,9 +49,6 @@ struct MainMenuData
int selected_world;
bool simple_singleplayer_mode;

// Actions
bool kill;

//error handling
std::string errormessage;
MainMenuData():
Expand Down
5 changes: 1 addition & 4 deletions src/main.cpp
Expand Up @@ -1519,7 +1519,6 @@ int main(int argc, char *argv[])

// Initialize menu data
MainMenuData menudata;
menudata.kill = kill;
menudata.address = address;
menudata.name = playername;
menudata.port = itos(port);
Expand Down Expand Up @@ -1565,13 +1564,11 @@ int main(int argc, char *argv[])
}
infostream<<"Waited for other menus"<<std::endl;

GUIEngine* temp = new GUIEngine(device, guiroot, &g_menumgr,smgr,&menudata);
GUIEngine* temp = new GUIEngine(device, guiroot, &g_menumgr,smgr,&menudata,kill);

delete temp;
//once finished you'll never end up here
smgr->clear();
kill = menudata.kill;

}

if(menudata.errormessage != ""){
Expand Down
6 changes: 1 addition & 5 deletions src/script/lua_api/l_mainmenu.cpp
Expand Up @@ -131,11 +131,7 @@ int ModApiMainMenu::l_close(lua_State *L)
GUIEngine* engine = getGuiEngine(L);
assert(engine != 0);

engine->m_data->kill = true;

//close menu next time
engine->m_startgame = true;
engine->m_menu->quitMenu();
engine->m_kill = true;
return 0;
}

Expand Down

0 comments on commit ade70fe

Please sign in to comment.