]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/gui/mainwin.cpp
Fixes for compilation against GCC 6.
[virtualjaguar] / src / gui / mainwin.cpp
index e8ebb63eb7059618a396ebb1ea49c184ddbd52c8..cb01b029eb66f5035c0ea3fd0fb7a4851183500f 100644 (file)
@@ -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();
 }
 
 
@@ -1155,10 +1164,10 @@ void MainWin::ReadSettings(void)
        vjs.allowWritesToROM = settings.value("writeROM", false).toBool();
        vjs.biosType         = settings.value("biosType", BT_M_SERIES).toInt();
        vjs.useFastBlitter   = settings.value("useFastBlitter", false).toBool();
-       strcpy(vjs.EEPROMPath, settings.value("EEPROMs", QDesktopServices::storageLocation(QDesktopServices::DataLocation).append("/eeproms/")).toString().toAscii().data());
-       strcpy(vjs.ROMPath, settings.value("ROMs", QDesktopServices::storageLocation(QDesktopServices::DataLocation).append("/software/")).toString().toAscii().data());
-       strcpy(vjs.alpineROMPath, settings.value("DefaultROM", "").toString().toAscii().data());
-       strcpy(vjs.absROMPath, settings.value("DefaultABS", "").toString().toAscii().data());
+       strcpy(vjs.EEPROMPath, settings.value("EEPROMs", QStandardPaths::writableLocation(QStandardPaths::DataLocation).append("/eeproms/")).toString().toUtf8().data());
+       strcpy(vjs.ROMPath, settings.value("ROMs", QStandardPaths::writableLocation(QStandardPaths::DataLocation).append("/software/")).toString().toUtf8().data());
+       strcpy(vjs.alpineROMPath, settings.value("DefaultROM", "").toString().toUtf8().data());
+       strcpy(vjs.absROMPath, settings.value("DefaultABS", "").toString().toUtf8().data());
 
 WriteLog("MainWin: Paths\n");
 WriteLog("   EEPROMPath = \"%s\"\n", vjs.EEPROMPath);
@@ -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);
 }