Add display for refresh rates in status bars

This commit is contained in:
Cacodemon345
2025-08-11 17:13:13 +06:00
parent 060f746223
commit 0dfac122e7
5 changed files with 43 additions and 0 deletions

View File

@@ -130,6 +130,8 @@ typedef struct monitor_t {
int mon_force_resize;
int mon_fullchange;
int mon_changeframecount;
int mon_renderedframes;
atomic_int mon_actualrenderedframes;
atomic_int mon_screenshots;
uint32_t *mon_pal_lookup;
int *mon_cga_palette;

View File

@@ -220,6 +220,16 @@ MainWindow::MainWindow(QWidget *parent)
kana_label->setToolTip(QShortcut::tr("Kana Lock"));
statusBar()->addPermanentWidget(kana_label);
auto hertz_label = new QLabel;
QTimer* frameRateTimer = new QTimer(this);
frameRateTimer->setInterval(1000);
frameRateTimer->setSingleShot(false);
connect(frameRateTimer, &QTimer::timeout, [this, hertz_label] {
hertz_label->setText(QString("%1 Hz").arg(monitors[0].mon_actualrenderedframes));
});
statusBar()->addPermanentWidget(hertz_label);
frameRateTimer->start(1000);
QTimer* ledKeyboardTimer = new QTimer(this);
ledKeyboardTimer->setTimerType(Qt::CoarseTimer);
ledKeyboardTimer->setInterval(1);

View File

@@ -45,6 +45,8 @@
#include <QKeyEvent>
#include <QWidget>
#include <QTimer>
#include <atomic>
#include <mutex>
#include <array>
@@ -96,6 +98,17 @@ RendererStack::RendererStack(QWidget *parent, int monitor_index)
ui->setupUi(this);
m_monitor_index = monitor_index;
if (monitor_index >= 1) {
QTimer* frameRateTimer = new QTimer(this);
frameRateTimer->setSingleShot(false);
frameRateTimer->setInterval(1000);
connect(frameRateTimer, &QTimer::timeout, [this] {
this->setWindowTitle(QObject::tr("86Box Monitor #") + QString::number(m_monitor_index + 1) + QString(" - %1 Hz").arg(monitors[m_monitor_index].mon_actualrenderedframes));
});
frameRateTimer->start(1000);
}
#if defined __unix__ && !defined __HAIKU__
memset(auto_mouse_type, 0, sizeof (auto_mouse_type));
mousedata.mouse_type = getenv("EMU86BOX_MOUSE");

View File

@@ -283,6 +283,22 @@ vid_table_log(const char *fmt, ...)
# define vid_table_log(fmt, ...)
#endif
static pc_timer_t framerate_timer;
void
video_update_framerates(void* priv)
{
(void)priv;
int i = 0;
for (i = 0; i < GFXCARD_MAX; i++) {
monitors[i].mon_actualrenderedframes = monitors[i].mon_renderedframes;
monitors[i].mon_renderedframes = 0;
}
timer_on_auto(&framerate_timer, 1000 * 1000);
}
void
video_reset_close(void)
{
@@ -358,6 +374,7 @@ video_reset(int card)
device_add(video_cards[card].device);
}
timer_add(&framerate_timer, video_update_framerates, NULL, 1);
was_reset = 1;
}

View File

@@ -476,6 +476,7 @@ video_blit_memtoscreen_monitor(int x, int y, int w, int h, int monitor_index)
monitors[monitor_index].mon_blit_data_ptr->y = y;
monitors[monitor_index].mon_blit_data_ptr->w = w;
monitors[monitor_index].mon_blit_data_ptr->h = h;
monitors[monitor_index].mon_renderedframes++;
thread_set_event(monitors[monitor_index].mon_blit_data_ptr->wake_blit_thread);
MTR_END("video", "video_blit_memtoscreen");