diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index 4921487a..86c4a69f 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -1877,6 +1877,7 @@ int consoleWin_t::getSchedParam( int &policy, int &priority ) if ( sched_getparam( getpid(), &p ) ) { + perror("GUI thread sched_getparam error: "); ret = -1; priority = 0; } @@ -1892,6 +1893,11 @@ int consoleWin_t::getSchedParam( int &policy, int &priority ) { perror("GUI thread pthread_getschedparam error: "); ret = -1; + priority = 0; + } + else + { + priority = p.sched_priority; } #endif return ret; @@ -2193,6 +2199,8 @@ int emulatorThread_t::getSchedParam( int &policy, int &priority ) perror("Emulator thread pthread_getschedparam error: "); return -1; } + priority = p.sched_priority; + return 0; } diff --git a/src/drivers/Qt/TimingConf.cpp b/src/drivers/Qt/TimingConf.cpp index b5ef59e8..5996e9b6 100644 --- a/src/drivers/Qt/TimingConf.cpp +++ b/src/drivers/Qt/TimingConf.cpp @@ -60,7 +60,7 @@ TimingConfDialog_t::TimingConfDialog_t(QWidget *parent) : QDialog( parent ) { int opt; - QVBoxLayout *mainLayout, *vbox; + QVBoxLayout *mainLayout; //QHBoxLayout *hbox; QGridLayout *grid; QGroupBox *emuPrioBox, *guiPrioBox; @@ -140,6 +140,7 @@ TimingConfDialog_t::TimingConfDialog_t(QWidget *parent) TimingConfDialog_t::~TimingConfDialog_t(void) { printf("Destroy Timing Config Window\n"); + saveValues(); } //---------------------------------------------------------------------------- void TimingConfDialog_t::closeEvent(QCloseEvent *event) @@ -148,7 +149,6 @@ void TimingConfDialog_t::closeEvent(QCloseEvent *event) done(0); deleteLater(); event->accept(); - saveValues(); } //---------------------------------------------------------------------------- void TimingConfDialog_t::closeWindow(void) @@ -156,7 +156,6 @@ void TimingConfDialog_t::closeWindow(void) //printf("Close Window\n"); done(0); deleteLater(); - saveValues(); } //---------------------------------------------------------------------------- void TimingConfDialog_t::emuSchedCtlChange( int state ) @@ -166,23 +165,31 @@ void TimingConfDialog_t::emuSchedCtlChange( int state ) //---------------------------------------------------------------------------- void TimingConfDialog_t::saveValues(void) { - int policy, prio; + int policy, prio, nice; if ( consoleWindow == NULL ) { return; } + nice = consoleWindow->emulatorThread->getNicePriority(); + consoleWindow->emulatorThread->getSchedParam( policy, prio ); g_config->setOption( "SDL.EmuSchedPolicy", policy ); g_config->setOption( "SDL.EmuSchedPrioRt", prio ); - g_config->setOption( "SDL.EmuSchedNice" , consoleWindow->emulatorThread->getNicePriority() ); + g_config->setOption( "SDL.EmuSchedNice" , nice ); + + //printf("EMU Sched: %i %i %i\n", policy, prio, nice ); + + nice = consoleWindow->getNicePriority(); consoleWindow->getSchedParam( policy, prio ); g_config->setOption( "SDL.GuiSchedPolicy", policy ); g_config->setOption( "SDL.GuiSchedPrioRt", prio ); - g_config->setOption( "SDL.GuiSchedNice" , consoleWindow->getNicePriority() ); + g_config->setOption( "SDL.GuiSchedNice" , nice ); + + //printf("GUI Sched: %i %i %i\n", policy, prio, nice ); g_config->save(); } diff --git a/src/drivers/Qt/config.cpp b/src/drivers/Qt/config.cpp index 42ca7dc6..7463851a 100644 --- a/src/drivers/Qt/config.cpp +++ b/src/drivers/Qt/config.cpp @@ -317,10 +317,10 @@ InitConfig() config->addOption("_setSchedParam" , "SDL.SetSchedParam" , 0); config->addOption("_emuSchedPolicy" , "SDL.EmuSchedPolicy", 0); - config->addOption("_emuSchedNice" , "SDL.EmuSchedNice ", 0); + config->addOption("_emuSchedNice" , "SDL.EmuSchedNice" , 0); config->addOption("_emuSchedPrioRt" , "SDL.EmuSchedPrioRt", 40); config->addOption("_guiSchedPolicy" , "SDL.GuiSchedPolicy", 0); - config->addOption("_guiSchedNice" , "SDL.GuiSchedNice ", 0); + config->addOption("_guiSchedNice" , "SDL.GuiSchedNice" , 0); config->addOption("_guiSchedPrioRt" , "SDL.GuiSchedPrioRt", 40); // fcm -> fm2 conversion