mirror of
https://github.com/glest/glest-source.git
synced 2025-10-02 18:36:48 +02:00
ensure language toggle only happens outside of a render event
This commit is contained in:
@@ -657,7 +657,10 @@ MainWindow::MainWindow(Program *program) : WindowGl() {
|
|||||||
this->program= program;
|
this->program= program;
|
||||||
this->popupMenu.setEnabled(false);
|
this->popupMenu.setEnabled(false);
|
||||||
this->popupMenu.setVisible(false);
|
this->popupMenu.setVisible(false);
|
||||||
|
this->triggerLanguageToggle = false;
|
||||||
|
this->triggerLanguage = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow(){
|
MainWindow::~MainWindow(){
|
||||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
delete program;
|
delete program;
|
||||||
@@ -686,7 +689,9 @@ void MainWindow::eventMouseDown(int x, int y, MouseButton mouseButton){
|
|||||||
|
|
||||||
// Exit game
|
// Exit game
|
||||||
if(result.first != cancelLanguageSelection) {
|
if(result.first != cancelLanguageSelection) {
|
||||||
toggleLanguage(result.second);
|
//toggleLanguage(result.second);
|
||||||
|
this->triggerLanguageToggle = true;
|
||||||
|
this->triggerLanguage = result.second;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -883,6 +888,8 @@ void MainWindow::showLanguages() {
|
|||||||
void MainWindow::toggleLanguage(string language) {
|
void MainWindow::toggleLanguage(string language) {
|
||||||
popupMenu.setEnabled(false);
|
popupMenu.setEnabled(false);
|
||||||
popupMenu.setVisible(false);
|
popupMenu.setVisible(false);
|
||||||
|
this->triggerLanguageToggle = false;
|
||||||
|
this->triggerLanguage = "";
|
||||||
|
|
||||||
Lang &lang= Lang::getInstance();
|
Lang &lang= Lang::getInstance();
|
||||||
string currentLanguage = lang.getLanguage();
|
string currentLanguage = lang.getLanguage();
|
||||||
@@ -983,7 +990,9 @@ void MainWindow::eventKeyDown(SDL_KeyboardEvent key) {
|
|||||||
else if(keystate.mod & (KMOD_LCTRL | KMOD_RCTRL) &&
|
else if(keystate.mod & (KMOD_LCTRL | KMOD_RCTRL) &&
|
||||||
isKeyPressed(configKeys.getSDLKey("SwitchLanguage"),key) == true) {
|
isKeyPressed(configKeys.getSDLKey("SwitchLanguage"),key) == true) {
|
||||||
if(keystate.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) {
|
if(keystate.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) {
|
||||||
toggleLanguage("");
|
//toggleLanguage("");
|
||||||
|
this->triggerLanguageToggle = true;
|
||||||
|
this->triggerLanguage = "";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
showLanguages();
|
showLanguages();
|
||||||
|
@@ -34,9 +34,10 @@ private:
|
|||||||
Program* program;
|
Program* program;
|
||||||
PopupMenu popupMenu;
|
PopupMenu popupMenu;
|
||||||
int cancelLanguageSelection;
|
int cancelLanguageSelection;
|
||||||
|
bool triggerLanguageToggle;
|
||||||
|
string triggerLanguage;
|
||||||
|
|
||||||
void showLanguages();
|
void showLanguages();
|
||||||
void toggleLanguage(string language);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MainWindow(Program *program);
|
MainWindow(Program *program);
|
||||||
@@ -57,6 +58,10 @@ public:
|
|||||||
virtual void eventClose();
|
virtual void eventClose();
|
||||||
|
|
||||||
virtual void render();
|
virtual void render();
|
||||||
|
void toggleLanguage(string language);
|
||||||
|
bool getTriggerLanguageToggle() const { return triggerLanguageToggle; }
|
||||||
|
string getTriggerLanguage() const { return triggerLanguage; }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}}//end namespace
|
}}//end namespace
|
||||||
|
@@ -310,6 +310,17 @@ void Program::loop() {
|
|||||||
void Program::loopWorker() {
|
void Program::loopWorker() {
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled) SystemFlags::OutputDebug(SystemFlags::debugPerformance,"In [%s::%s Line: %d] ================================= MAIN LOOP START ================================= \n",__FILE__,__FUNCTION__,__LINE__);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled) SystemFlags::OutputDebug(SystemFlags::debugPerformance,"In [%s::%s Line: %d] ================================= MAIN LOOP START ================================= \n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
|
Renderer &renderer= Renderer::getInstance();
|
||||||
|
if(renderer.isMasterserverMode() == false && window) {
|
||||||
|
MainWindow *mainWindow = dynamic_cast<MainWindow *>(window);
|
||||||
|
if(mainWindow) {
|
||||||
|
//mainWindow->render();
|
||||||
|
if(mainWindow->getTriggerLanguageToggle()) {
|
||||||
|
mainWindow->toggleLanguage(mainWindow->getTriggerLanguage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Chrono chronoLoop;
|
Chrono chronoLoop;
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled) chronoLoop.start();
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled) chronoLoop.start();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user