From 0cb479dda8b02e8c9d7eed99eec1787c9fa84e88 Mon Sep 17 00:00:00 2001 From: SimoZ64 Date: Wed, 16 Apr 2025 15:20:12 +0200 Subject: [PATCH] comment out bunch of qt things --- src/frontend/AudioSettings.hpp | 27 ++++------ src/frontend/CMakeLists.txt | 3 +- src/frontend/CPUSettings.hpp | 16 ++---- src/frontend/CodeModel.hpp | 12 ----- src/frontend/Debugger.hpp | 15 +----- src/frontend/EmuThread.cpp | 87 +++++++++++++++++---------------- src/frontend/EmuThread.hpp | 8 ++- src/frontend/InputSettings.hpp | 49 ++++++++----------- src/frontend/KaizenQt.cpp | 18 +------ src/frontend/KaizenQt.hpp | 18 +------ src/frontend/MainWindow.hpp | 53 ++++++++------------ src/frontend/RenderWidget.hpp | 1 - src/frontend/SettingsWindow.hpp | 44 ++++++----------- 13 files changed, 125 insertions(+), 226 deletions(-) delete mode 100644 src/frontend/CodeModel.hpp diff --git a/src/frontend/AudioSettings.hpp b/src/frontend/AudioSettings.hpp index c6836ef5..94f05a84 100644 --- a/src/frontend/AudioSettings.hpp +++ b/src/frontend/AudioSettings.hpp @@ -1,24 +1,17 @@ #pragma once #include -#include -#include -#include -#include -#include -class AudioSettings final : public QWidget { - std::unique_ptr lockChannels = std::make_unique(); - std::unique_ptr labelLock = std::make_unique("Lock channels:"); - std::unique_ptr labelL = std::make_unique("Volume L"); - std::unique_ptr labelR = std::make_unique("Volume R"); - std::unique_ptr mainLayout = std::make_unique(); - std::unique_ptr volLayout = std::make_unique(); - Q_OBJECT +class AudioSettings final { + //std::unique_ptr lockChannels = std::make_unique(); + //std::unique_ptr labelLock = std::make_unique("Lock channels:"); + //std::unique_ptr labelL = std::make_unique("Volume L"); + //std::unique_ptr labelR = std::make_unique("Volume R"); + //std::unique_ptr mainLayout = std::make_unique(); + //std::unique_ptr volLayout = std::make_unique(); + //Q_OBJECT public: - std::unique_ptr volumeL = std::make_unique(Qt::Horizontal), - volumeR = std::make_unique(Qt::Horizontal); + //std::unique_ptr volumeL = std::make_unique(Qt::Horizontal), + // volumeR = std::make_unique(Qt::Horizontal); explicit AudioSettings(nlohmann::json &); nlohmann::json &settings; -Q_SIGNALS: - void modified(); }; diff --git a/src/frontend/CMakeLists.txt b/src/frontend/CMakeLists.txt index cbd6120b..d4277b88 100644 --- a/src/frontend/CMakeLists.txt +++ b/src/frontend/CMakeLists.txt @@ -121,8 +121,7 @@ add_executable(kaizen InputSettings.hpp InputSettings.cpp Debugger.hpp - Debugger.cpp - CodeModel.hpp) + Debugger.cpp) target_link_libraries(kaizen PUBLIC SDL3::SDL3 SDL3::SDL3-static cflags::cflags discord-rpc fmt mio nlohmann_json parallel-rdp capstone backend) target_compile_definitions(kaizen PUBLIC SDL_MAIN_HANDLED) diff --git a/src/frontend/CPUSettings.hpp b/src/frontend/CPUSettings.hpp index 9166316a..b22ce5a1 100644 --- a/src/frontend/CPUSettings.hpp +++ b/src/frontend/CPUSettings.hpp @@ -1,18 +1,12 @@ #pragma once #include -#include -#include -#include -#include -class CPUSettings final : public QWidget { - std::unique_ptr cpuTypes = std::make_unique(); - std::unique_ptr label = std::make_unique("CPU type:"); - std::unique_ptr mainLayout = std::make_unique(); - Q_OBJECT +class CPUSettings final { + //std::unique_ptr cpuTypes = std::make_unique(); + //std::unique_ptr label = std::make_unique("CPU type:"); + //std::unique_ptr mainLayout = std::make_unique(); + //Q_OBJECT public: explicit CPUSettings(nlohmann::json &); nlohmann::json &settings; -Q_SIGNALS: - void modified(); }; diff --git a/src/frontend/CodeModel.hpp b/src/frontend/CodeModel.hpp deleted file mode 100644 index dde8e663..00000000 --- a/src/frontend/CodeModel.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once -#include - -class CodeModel final : public QAbstractTableModel { - Q_OBJECT -public: - ~CodeModel() override = default; - explicit CodeModel(QObject *parent = nullptr) {} - [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override { return 1; } - [[nodiscard]] int columnCount(const QModelIndex &parent = QModelIndex()) const override { return 2; } - [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override { return {}; } -}; \ No newline at end of file diff --git a/src/frontend/Debugger.hpp b/src/frontend/Debugger.hpp index b82c275d..fc38c6f1 100644 --- a/src/frontend/Debugger.hpp +++ b/src/frontend/Debugger.hpp @@ -1,19 +1,6 @@ #pragma once -#include -#include -#include -#include -#include -#include -class Debugger final : public QWidget { - std::unique_ptr disassembly = std::make_unique(), - cpuState = std::make_unique(); - std::unique_ptr codeView = std::make_unique(disassembly.get()), - registers = std::make_unique(cpuState.get()); - std::unique_ptr horLayout = std::make_unique(); - std::unique_ptr verLayout = std::make_unique(); - std::unique_ptr codeModel = std::make_unique(); +class Debugger final { public: Debugger(); diff --git a/src/frontend/EmuThread.cpp b/src/frontend/EmuThread.cpp index bb2e8126..9e6703c9 100644 --- a/src/frontend/EmuThread.cpp +++ b/src/frontend/EmuThread.cpp @@ -1,53 +1,56 @@ #include #include -EmuThread::EmuThread(const std::shared_ptr &core, QLabel &fps, RenderWidget &renderWidget, +EmuThread::EmuThread(const std::shared_ptr &core, std::string &fps, RenderWidget &renderWidget, SettingsWindow &settings) noexcept : renderWidget(renderWidget), core(core), settings(settings), fps(fps) {} -void EmuThread::run() noexcept { - core->parallel.Init(renderWidget.qtVkInstanceFactory, renderWidget.wsiPlatform, renderWidget.windowInfo, - core->cpu->GetMem().GetRDRAMPtr()); - - auto lastSample = std::chrono::high_resolution_clock::now(); - auto avgFps = 16.667; - auto sampledFps = 0; - static bool oneSecondPassed = false; - - fps.setText(fmt::format("{:.2f} FPS", 1000.0 / avgFps).c_str()); - - while (!isInterruptionRequested()) { - const auto startFrameTime = std::chrono::high_resolution_clock::now(); - if (!core->pause) { - core->Run(settings.getVolumeL(), settings.getVolumeR()); - } - - if (core->render) { - core->parallel.UpdateScreen(core->cpu->GetMem().mmio.vi); - } - - const auto endFrameTime = std::chrono::high_resolution_clock::now(); - using namespace std::chrono_literals; - const auto frameTimeMs = std::chrono::duration(endFrameTime - startFrameTime) / 1ms; - avgFps += frameTimeMs; - - sampledFps++; - - if (const auto elapsedSinceLastSample = std::chrono::duration(endFrameTime - lastSample) / 1s; - elapsedSinceLastSample >= 1.0) { - if (!oneSecondPassed) { - oneSecondPassed = true; - continue; +void EmuThread::start() noexcept { + thread = std::thread([this]() { + isRunning = true; + core->parallel.Init(renderWidget.imGuiVkInstanceFactory, renderWidget.wsiPlatform, renderWidget.windowInfo, + core->cpu->GetMem().GetRDRAMPtr()); + + auto lastSample = std::chrono::high_resolution_clock::now(); + auto avgFps = 16.667; + auto sampledFps = 0; + static bool oneSecondPassed = false; + + fps = fmt::format("{:.2f} FPS", 1000.0 / avgFps); + + while (!interruptionRequested) { + const auto startFrameTime = std::chrono::high_resolution_clock::now(); + if (!core->pause) { + core->Run(settings.getVolumeL(), settings.getVolumeR()); + } + + if (core->render) { + core->parallel.UpdateScreen(core->cpu->GetMem().mmio.vi); + } + + const auto endFrameTime = std::chrono::high_resolution_clock::now(); + using namespace std::chrono_literals; + const auto frameTimeMs = std::chrono::duration(endFrameTime - startFrameTime) / 1ms; + avgFps += frameTimeMs; + + sampledFps++; + + if (const auto elapsedSinceLastSample = std::chrono::duration(endFrameTime - lastSample) / 1s; + elapsedSinceLastSample >= 1.0) { + if (!oneSecondPassed) { + oneSecondPassed = true; + continue; + } + lastSample = endFrameTime; + avgFps /= sampledFps; + sampledFps = 0; + fps = fmt::format("{:.2f} FPS", 1000.0 / avgFps); } - lastSample = endFrameTime; - avgFps /= sampledFps; - sampledFps = 0; - fps.setText(fmt::format("{:.2f} FPS", 1000.0 / avgFps).c_str()); } - } - - SetRender(false); - Stop(); + SetRender(false); + Stop(); + isRunning = false; + }); } void EmuThread::TogglePause() const noexcept { diff --git a/src/frontend/EmuThread.hpp b/src/frontend/EmuThread.hpp index 260f46b3..dfa7b496 100644 --- a/src/frontend/EmuThread.hpp +++ b/src/frontend/EmuThread.hpp @@ -12,14 +12,18 @@ class EmuThread final { RenderWidget &renderWidget; public: - explicit EmuThread(const std::shared_ptr &, RenderWidget &, SettingsWindow &) noexcept; + explicit EmuThread(const std::shared_ptr &, std::string &, RenderWidget &, SettingsWindow &) noexcept; - void run() noexcept; + void start() noexcept; void TogglePause() const noexcept; void SetRender(bool v) const noexcept; void Reset() const noexcept; void Stop() const noexcept; + void requestInterruption() { interruptionRequested = true; } + bool interruptionRequested = false, isRunning = false; std::shared_ptr core; SettingsWindow &settings; + std::string fps; + std::thread thread; }; diff --git a/src/frontend/InputSettings.hpp b/src/frontend/InputSettings.hpp index 921a6cf6..e5d1aad4 100644 --- a/src/frontend/InputSettings.hpp +++ b/src/frontend/InputSettings.hpp @@ -1,14 +1,8 @@ #pragma once #include -#include -#include -#include -#include -#include -#include -#include +#include -class InputSettings final : public QWidget { +class InputSettings final { bool grabbing = false; int whichGrabbing = -1; @@ -17,29 +11,26 @@ class InputSettings final : public QWidget { std::unordered_map gamepadIndexes{}; - std::unique_ptr AB = std::make_unique(); - std::unique_ptr ZStart = std::make_unique(); - std::unique_ptr LR = std::make_unique(); - std::unique_ptr DupDdown = std::make_unique(); - std::unique_ptr DleftDright = std::make_unique(); - std::unique_ptr CupCdown = std::make_unique(); - std::unique_ptr CleftCright = std::make_unique(); - std::unique_ptr AupAdown = std::make_unique(); - std::unique_ptr AleftAright = std::make_unique(); - std::unique_ptr mainLayout = std::make_unique(); - std::array, 18> kbButtons; - std::array, 18> buttonLabels; - std::unique_ptr deviceComboBoxLayout = std::make_unique(); - QTimer refresh, pollGamepad; - std::unique_ptr devicesLabel = std::make_unique("Device:"); - std::unique_ptr devices = std::make_unique(); - Q_OBJECT + //std::unique_ptr AB = std::make_unique(); + //std::unique_ptr ZStart = std::make_unique(); + //std::unique_ptr LR = std::make_unique(); + //std::unique_ptr DupDdown = std::make_unique(); + //std::unique_ptr DleftDright = std::make_unique(); + //std::unique_ptr CupCdown = std::make_unique(); + //std::unique_ptr CleftCright = std::make_unique(); + //std::unique_ptr AupAdown = std::make_unique(); + //std::unique_ptr AleftAright = std::make_unique(); + //std::unique_ptr mainLayout = std::make_unique(); + //std::array, 18> kbButtons; + //std::array, 18> buttonLabels; + //std::unique_ptr deviceComboBoxLayout = std::make_unique(); + //QTimer refresh, pollGamepad; + //std::unique_ptr devicesLabel = std::make_unique("Device:"); + //std::unique_ptr devices = std::make_unique(); + //Q_OBJECT public: bool selectedDeviceIsNotKeyboard = false; explicit InputSettings(nlohmann::json &); nlohmann::json &settings; - void keyPressEvent(QKeyEvent *) override; - std::array GetMappedKeys() const; -Q_SIGNALS: - void modified(); + //std::array GetMappedKeys() const; }; diff --git a/src/frontend/KaizenQt.cpp b/src/frontend/KaizenQt.cpp index e441c88f..cabafde7 100644 --- a/src/frontend/KaizenQt.cpp +++ b/src/frontend/KaizenQt.cpp @@ -1,9 +1,5 @@ #include #include -#include -#include -#include -#include namespace fs = std::filesystem; @@ -44,17 +40,6 @@ void KaizenQt::ConnectMainWindowSignalsToSlots() noexcept { connect(mainWindow.get(), &MainWindow::Pause, emuThread.get(), &EmuThread::TogglePause); } -void KaizenQt::dragEnterEvent(QDragEnterEvent *event) { - if (event->mimeData()->hasUrls()) { - event->acceptProposedAction(); - } -} - -void KaizenQt::dropEvent(QDropEvent *event) { - const auto path = event->mimeData()->urls()[0].toLocalFile(); - LoadROM(path); -} - void KaizenQt::LoadROM(const QString &path) const noexcept { mainWindow->actionPause->setEnabled(true); mainWindow->actionReset->setEnabled(true); @@ -69,8 +54,7 @@ void KaizenQt::LoadROM(const QString &path) const noexcept { void KaizenQt::Quit() const noexcept { if (emuThread) { emuThread->requestInterruption(); - while (emuThread->isRunning()) - ; + while (emuThread->isRunning) {} } QApplication::quit(); } diff --git a/src/frontend/KaizenQt.hpp b/src/frontend/KaizenQt.hpp index 77e586c5..33ec8abc 100644 --- a/src/frontend/KaizenQt.hpp +++ b/src/frontend/KaizenQt.hpp @@ -4,23 +4,7 @@ #include #include #include - -enum class CompositorCategory { Windows, MacOS, XCB, Wayland }; - -static CompositorCategory GetOSCompositorCategory() { - const QString platform_name = QGuiApplication::platformName(); - if (platform_name == QStringLiteral("windows")) - return CompositorCategory::Windows; - if (platform_name == QStringLiteral("xcb")) - return CompositorCategory::XCB; - if (platform_name == QStringLiteral("wayland") || platform_name == QStringLiteral("wayland-egl")) - return CompositorCategory::Wayland; - if (platform_name == QStringLiteral("cocoa") || platform_name == QStringLiteral("ios")) - return CompositorCategory::MacOS; - - Util::error("Unknown Qt platform!"); - return CompositorCategory::Windows; -} +#include class KaizenQt { public: diff --git a/src/frontend/MainWindow.hpp b/src/frontend/MainWindow.hpp index 8d85573f..7704e6f4 100644 --- a/src/frontend/MainWindow.hpp +++ b/src/frontend/MainWindow.hpp @@ -1,41 +1,29 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include -class MainWindow final : public QMainWindow { - Q_OBJECT - +class MainWindow final { public: explicit MainWindow(const std::shared_ptr &) noexcept; - std::unique_ptr actionOpenDebuggerWindow{}; - std::unique_ptr actionAbout{}; - std::unique_ptr actionOpen{}; - std::unique_ptr actionExit{}; - std::unique_ptr actionPause{}; - std::unique_ptr actionReset{}; - std::unique_ptr actionStop{}; - std::unique_ptr actionSettings{}; - std::unique_ptr centralwidget{}; - std::unique_ptr verticalLayout{}; - std::unique_ptr vulkanWidget{}; - std::unique_ptr menubar{}; - std::unique_ptr menuFile{}; - std::unique_ptr menuEmulation{}; - std::unique_ptr menuTools{}; - std::unique_ptr menuAbout{}; - std::unique_ptr statusbar{}; - std::unique_ptr fpsCounter{}; +//std::unique_ptr actionOpenDebuggerWindow{}; +//std::unique_ptr actionAbout{}; +//std::unique_ptr actionOpen{}; +//std::unique_ptr actionExit{}; +//std::unique_ptr actionPause{}; +//std::unique_ptr actionReset{}; +//std::unique_ptr actionStop{}; +//std::unique_ptr actionSettings{}; +//std::unique_ptr centralwidget{}; +//std::unique_ptr verticalLayout{}; +//std::unique_ptr vulkanWidget{}; +//std::unique_ptr menubar{}; +//std::unique_ptr menuFile{}; +//std::unique_ptr menuEmulation{}; +//std::unique_ptr menuTools{}; +//std::unique_ptr menuAbout{}; +//std::unique_ptr statusbar{}; +//std::unique_ptr fpsCounter{}; private: void Retranslate(); @@ -43,10 +31,9 @@ private: bool textPauseToggle = false; -Q_SIGNALS: void OpenDebugger(); void OpenSettings(); - void OpenROM(const QString &rom_file); + void OpenROM(const std::string &rom_file); void Exit(); void Reset(); void Stop(); diff --git a/src/frontend/RenderWidget.hpp b/src/frontend/RenderWidget.hpp index 07f4df88..e5b45a62 100644 --- a/src/frontend/RenderWidget.hpp +++ b/src/frontend/RenderWidget.hpp @@ -1,5 +1,4 @@ #pragma once -#undef signals #include #include #include diff --git a/src/frontend/SettingsWindow.hpp b/src/frontend/SettingsWindow.hpp index 06a85836..69b87152 100644 --- a/src/frontend/SettingsWindow.hpp +++ b/src/frontend/SettingsWindow.hpp @@ -2,43 +2,29 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include +#include -class SettingsWindow final : public QWidget { - std::unique_ptr cancel = std::make_unique("Cancel"); - std::unique_ptr apply = std::make_unique("Apply"); - std::unique_ptr iconProv = std::make_unique(); - std::unique_ptr folderBtn = std::make_unique(iconProv->icon(QFileIconProvider::Folder), ""); - std::unique_ptr folderLabelPrefix = std::make_unique("Save files' path: "); - std::unique_ptr folderLabel; - std::unique_ptr generalLayout = std::make_unique(); - std::unique_ptr generalLayoutV = std::make_unique(); - std::unique_ptr tabs = std::make_unique(); - std::unique_ptr mainLayout = std::make_unique(); - std::unique_ptr buttonsLayout = std::make_unique(); - Q_OBJECT +class SettingsWindow final { + //std::unique_ptr cancel = std::make_unique("Cancel"); + //std::unique_ptr apply = std::make_unique("Apply"); + //std::unique_ptr iconProv = std::make_unique(); + //std::unique_ptr folderBtn = std::make_unique(iconProv->icon(QFileIconProvider::Folder), ""); + //std::unique_ptr folderLabelPrefix = std::make_unique("Save files' path: "); + //std::unique_ptr folderLabel; + //std::unique_ptr generalLayout = std::make_unique(); + //std::unique_ptr generalLayoutV = std::make_unique(); + //std::unique_ptr tabs = std::make_unique(); + //std::unique_ptr mainLayout = std::make_unique(); + //std::unique_ptr buttonsLayout = std::make_unique(); public: SettingsWindow(); - void hideEvent(QHideEvent *event) override { emit gotClosed(); } - void showEvent(QShowEvent *event) override { emit gotOpened(); } [[nodiscard]] float getVolumeL() const { return static_cast(audioSettings->volumeL->value()) / 100.f; } [[nodiscard]] float getVolumeR() const { return static_cast(audioSettings->volumeR->value()) / 100.f; } - std::array keyMap{}; + //std::array keyMap{}; nlohmann::json settings; std::unique_ptr cpuSettings{}; std::unique_ptr audioSettings{}; std::unique_ptr inputSettings{}; - std::unique_ptr generalSettings{}; -Q_SIGNALS: - void gotOpened(); - void gotClosed(); - void regrabKeyboard(); + //std::unique_ptr generalSettings{}; };