X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgui%2Fmainwin.cpp;h=cb01b029eb66f5035c0ea3fd0fb7a4851183500f;hb=HEAD;hp=e84be10b4af5ec19350681e092211dafc90cfe13;hpb=5ae68cf3e1b1a38f30d4201ec41ca761a72d3c96;p=virtualjaguar diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp index e84be10..cb01b02 100644 --- a/src/gui/mainwin.cpp +++ b/src/gui/mainwin.cpp @@ -139,18 +139,15 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), powerRed.addFile(":/res/power-off.png", QSize(), QIcon::Normal, QIcon::Off); powerRed.addFile(":/res/power-on-red.png", QSize(), QIcon::Normal, QIcon::On); -// powerAct = new QAction(QIcon(":/res/power.png"), tr("&Power"), this); powerAct = new QAction(powerGreen, tr("&Power"), this); powerAct->setStatusTip(tr("Powers Jaguar on/off")); powerAct->setCheckable(true); powerAct->setChecked(false); -// powerAct->setDisabled(true); connect(powerAct, SIGNAL(triggered()), this, SLOT(TogglePowerState())); QIcon pauseIcon; pauseIcon.addFile(":/res/pause-off", QSize(), QIcon::Normal, QIcon::Off); pauseIcon.addFile(":/res/pause-on", QSize(), QIcon::Normal, QIcon::On); -// pauseAct = new QAction(QIcon(":/res/pause.png"), tr("Pause"), this); pauseAct = new QAction(pauseIcon, tr("Pause"), this); pauseAct->setStatusTip(tr("Toggles the running state")); pauseAct->setCheckable(true); @@ -188,7 +185,10 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), palAct->setCheckable(true); connect(palAct, SIGNAL(triggered()), this, SLOT(SetPAL())); - blurAct = new QAction(QIcon(":/res/blur.png"), tr("Blur"), this); + blur.addFile(":/res/blur-off.png", QSize(), QIcon::Normal, QIcon::Off); + blur.addFile(":/res/blur-on.png", QSize(), QIcon::Normal, QIcon::On); + + blurAct = new QAction(blur, tr("Blur"), this); blurAct->setStatusTip(tr("Sets OpenGL rendering to GL_NEAREST")); blurAct->setCheckable(true); connect(blurAct, SIGNAL(triggered()), this, SLOT(ToggleBlur())); @@ -324,10 +324,9 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), // Create status bar statusBar()->showMessage(tr("Ready")); - ReadSettings(); - - // Do this in case original size isn't correct (mostly for the first-run case) + // Do this in case original size isn't correct (mostly for the first-run + // case) ResizeMainWindow(); // Create our test pattern bitmaps @@ -726,6 +725,21 @@ static uint32_t ntscTickCount; HandleGamepads(); JaguarExecuteNew(); videoWidget->HandleMouseHiding(); + +static uint32_t refresh = 0; + // Do autorefresh on debug windows + // Have to be careful, too much causes the emulator to slow way down! + if (vjs.hardwareTypeAlpine) + { + if (refresh == 60) + { + memBrowseWin->RefreshContents(); + cpuBrowseWin->RefreshContents(); + refresh = 0; + } + else + refresh++; + } } videoWidget->updateGL(); @@ -950,7 +964,7 @@ void MainWin::LoadSoftware(QString file) running = false; // Prevent bad things(TM) from happening... pauseForFileSelector = false; // Reset the file selector pause flag - char * biosPointer = jaguarBootROM; + uint8_t * biosPointer = jaguarBootROM; if (vjs.hardwareTypeAlpine) biosPointer = jaguarDevBootROM2; @@ -962,7 +976,7 @@ void MainWin::LoadSoftware(QString file) powerButtonOn = false; TogglePowerState(); // We have to load our software *after* the Jaguar RESET - cartridgeLoaded = JaguarLoadFile(file.toAscii().data()); + cartridgeLoaded = JaguarLoadFile(file.toUtf8().data()); SET32(jaguarMainRAM, 0, 0x00200000); // Set top of stack... // This is icky because we've already done it @@ -1016,11 +1030,9 @@ void MainWin::SetFullScreen(bool state/*= true*/) if (debugbar) debugbar->hide(); - showFullScreen(); // This is needed because the fullscreen may happen on a different // screen than screen 0: int screenNum = QApplication::desktop()->screenNumber(videoWidget); -// QRect r = QApplication::desktop()->availableGeometry(screenNum); QRect r = QApplication::desktop()->screenGeometry(screenNum); double targetWidth = (double)VIRTUAL_SCREEN_WIDTH, targetHeight = (double)(vjs.hardwareTypeNTSC ? VIRTUAL_SCREEN_HEIGHT_NTSC : VIRTUAL_SCREEN_HEIGHT_PAL); @@ -1036,6 +1048,11 @@ void MainWin::SetFullScreen(bool state/*= true*/) } else { + // Seems Qt is fussy about this: showNormal() has to go first, or it + // will keep the window stuck in a psuedo-fullscreen mode with no way + // to get out of it (except closing the app). + showNormal(); + // Reset the video widget to windowed mode videoWidget->offset = 0; videoWidget->fullscreen = false; @@ -1046,7 +1063,6 @@ void MainWin::SetFullScreen(bool state/*= true*/) if (debugbar) debugbar->show(); - showNormal(); ResizeMainWindow(); move(mainWinPosition); } @@ -1112,14 +1128,7 @@ void MainWin::ResizeMainWindow(void) } } - show(); - - for(int i=0; i<2; i++) - { - resize(0, 0); - usleep(2000); - QApplication::processEvents(); - } + adjustSize(); } @@ -1167,6 +1176,7 @@ WriteLog("AlpineROMPath = \"%s\"\n", vjs.alpineROMPath); WriteLog(" absROMPath = \"%s\"\n", vjs.absROMPath); WriteLog("Pipelined DSP = %s\n", (vjs.usePipelinedDSP ? "ON" : "off")); +#if 0 // Keybindings in order of U, D, L, R, C, B, A, Op, Pa, 0-9, #, * vjs.p1KeyBindings[BUTTON_U] = settings.value("p1k_up", Qt::Key_S).toInt(); vjs.p1KeyBindings[BUTTON_D] = settings.value("p1k_down", Qt::Key_X).toInt(); @@ -1211,6 +1221,7 @@ WriteLog("Pipelined DSP = %s\n", (vjs.usePipelinedDSP ? "ON" : "off")); vjs.p2KeyBindings[BUTTON_9] = settings.value("p2k_9", Qt::Key_9).toInt(); vjs.p2KeyBindings[BUTTON_d] = settings.value("p2k_pound", Qt::Key_Slash).toInt(); vjs.p2KeyBindings[BUTTON_s] = settings.value("p2k_star", Qt::Key_Asterisk).toInt(); +#endif ReadProfiles(&settings); } @@ -1250,6 +1261,7 @@ void MainWin::WriteSettings(void) settings.setValue("DefaultROM", vjs.alpineROMPath); settings.setValue("DefaultABS", vjs.absROMPath); +#if 0 settings.setValue("p1k_up", vjs.p1KeyBindings[BUTTON_U]); settings.setValue("p1k_down", vjs.p1KeyBindings[BUTTON_D]); settings.setValue("p1k_left", vjs.p1KeyBindings[BUTTON_L]); @@ -1293,6 +1305,7 @@ void MainWin::WriteSettings(void) settings.setValue("p2k_9", vjs.p2KeyBindings[BUTTON_9]); settings.setValue("p2k_pound", vjs.p2KeyBindings[BUTTON_d]); settings.setValue("p2k_star", vjs.p2KeyBindings[BUTTON_s]); +#endif WriteProfiles(&settings); }