From 29fcc02883f3ee94144a46603cb7ff44c32afc55 Mon Sep 17 00:00:00 2001 From: Logan McNaughton <848146+loganmc10@users.noreply.github.com> Date: Wed, 20 Jul 2022 22:43:46 -0600 Subject: [PATCH] update gui --- mupen64plus-gui/mainwindow.cpp | 21 +++++++++++++++++++++ mupen64plus-gui/mainwindow.h | 6 ++++++ mupen64plus-gui/vidext.cpp | 3 ++- mupen64plus-gui/workerthread.cpp | 1 + mupen64plus-gui/workerthread.h | 1 + 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/mupen64plus-gui/mainwindow.cpp b/mupen64plus-gui/mainwindow.cpp index b7c6284..f807f41 100644 --- a/mupen64plus-gui/mainwindow.cpp +++ b/mupen64plus-gui/mainwindow.cpp @@ -406,6 +406,8 @@ MainWindow::MainWindow(QWidget *parent) : } setupDiscord(); + FPSLabel = new QLabel(this); + statusBar()->addPermanentWidget(FPSLabel); } MainWindow::~MainWindow() @@ -676,6 +678,10 @@ void MainWindow::createVkWindow(QVulkanInstance* vulkan_inst) my_window->installEventFilter(&keyPressFilter); this->installEventFilter(&keyPressFilter); + frame_timer = new QTimer(this); + connect(frame_timer, &QTimer::timeout, this, &MainWindow::updateFrameCount); + frame_timer->start(1000); + frame_count = 0; } void MainWindow::deleteVkWindow() @@ -683,6 +689,9 @@ void MainWindow::deleteVkWindow() QWidget *container = new QWidget(this); setCentralWidget(container); delete my_window; + frame_timer->stop(); + frame_timer->deleteLater(); + FPSLabel->clear(); } void MainWindow::stopGame() @@ -1152,3 +1161,15 @@ m64p_dynlib_handle MainWindow::getCoreLib() { return coreLib; } + +void MainWindow::addFrameCount() +{ + ++frame_count; +} + +void MainWindow::updateFrameCount() +{ + QString FPS = QString("%1 FPS").arg(frame_count); + FPSLabel->setText(FPS); + frame_count = 0; +} diff --git a/mupen64plus-gui/mainwindow.h b/mupen64plus-gui/mainwindow.h index f49f441..1eac109 100644 --- a/mupen64plus-gui/mainwindow.h +++ b/mupen64plus-gui/mainwindow.h @@ -67,8 +67,11 @@ public slots: void showMessage(QString message); void updateDiscordActivity(struct DiscordActivity activity); void clearDiscordActivity(); + void addFrameCount(); private slots: + void updateFrameCount(); + void discordCallback(); void updateDownloadFinished(QNetworkReply *reply); @@ -136,6 +139,7 @@ private: QMenu * OpenRecent; int verbose; int nogui; + uint32_t frame_count; QMessageBox *download_message = nullptr; VkWindow *my_window = nullptr; @@ -143,6 +147,8 @@ private: LogViewer logViewer; QSettings *settings = nullptr; KeyPressFilter keyPressFilter; + QTimer *frame_timer = nullptr; + QLabel *FPSLabel = nullptr; m64p_dynlib_handle coreLib; m64p_dynlib_handle rspPlugin; diff --git a/mupen64plus-gui/vidext.cpp b/mupen64plus-gui/vidext.cpp index b363d9e..3f2b12e 100644 --- a/mupen64plus-gui/vidext.cpp +++ b/mupen64plus-gui/vidext.cpp @@ -77,7 +77,8 @@ m64p_error qtVidExtFuncGLGetAttr(m64p_GLattr, int*) m64p_error qtVidExtFuncGLSwapBuf(void) { - return M64ERR_UNSUPPORTED; + w->getWorkerThread()->addFrameCount(); + return M64ERR_SUCCESS; } m64p_error qtVidExtFuncSetCaption(const char *) diff --git a/mupen64plus-gui/workerthread.cpp b/mupen64plus-gui/workerthread.cpp index bb54697..9a8e1e0 100644 --- a/mupen64plus-gui/workerthread.cpp +++ b/mupen64plus-gui/workerthread.cpp @@ -30,6 +30,7 @@ void WorkerThread::run() connect(this, SIGNAL(updateDiscordActivity(struct DiscordActivity)), w, SLOT(updateDiscordActivity(struct DiscordActivity)), Qt::BlockingQueuedConnection); connect(this, SIGNAL(clearDiscordActivity()), w, SLOT(clearDiscordActivity()), Qt::BlockingQueuedConnection); connect(this, SIGNAL(addLog(QString)), w->getLogViewer(), SLOT(addLog(QString)), Qt::QueuedConnection); + connect(this, SIGNAL(addFrameCount()), w, SLOT(addFrameCount()), Qt::QueuedConnection); #ifdef _WIN32 SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED); #else diff --git a/mupen64plus-gui/workerthread.h b/mupen64plus-gui/workerthread.h index b463809..f4b0c96 100644 --- a/mupen64plus-gui/workerthread.h +++ b/mupen64plus-gui/workerthread.h @@ -25,6 +25,7 @@ signals: void updateDiscordActivity(struct DiscordActivity activity); void clearDiscordActivity(); void addLog(QString text); + void addFrameCount(); private: QString m_fileName;