Skip to content

Commit 7419ef5

Browse files
committed
GUI: Cache dock move work to paint event
1 parent 06a1719 commit 7419ef5

File tree

2 files changed

+42
-19
lines changed

2 files changed

+42
-19
lines changed

src/gui/windows/cache/cachedock.cpp

+31-19
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ CacheDock::CacheDock(QWidget *parent, const QString &type)
3939
}
4040

4141
void CacheDock::setup(const machine::Cache *cache, bool cache_after_cache) {
42+
memory_reads = 0;
43+
memory_writes = 0;
44+
hit = 0;
45+
miss = 0;
46+
stalled = 0;
47+
speed_improv = 0.0;
48+
hit_rate = 0.0;
49+
4250
l_hit->setText("0");
4351
l_miss->setText("0");
4452
l_stalled->setText("0");
@@ -48,19 +56,12 @@ void CacheDock::setup(const machine::Cache *cache, bool cache_after_cache) {
4856
l_speed->setText("100%");
4957
l_speed->setHidden(cache_after_cache);
5058
if (cache != nullptr) {
59+
connect(cache, &machine::Cache::hit_update, this, &CacheDock::hit_update);
60+
connect(cache, &machine::Cache::miss_update, this, &CacheDock::miss_update);
61+
connect(cache, &machine::Cache::memory_reads_update, this, &CacheDock::memory_reads_update);
5162
connect(
52-
cache, &machine::Cache::hit_update, this, &CacheDock::hit_update);
53-
connect(
54-
cache, &machine::Cache::miss_update, this, &CacheDock::miss_update);
55-
connect(
56-
cache, &machine::Cache::memory_reads_update, this,
57-
&CacheDock::memory_reads_update);
58-
connect(
59-
cache, &machine::Cache::memory_writes_update, this,
60-
&CacheDock::memory_writes_update);
61-
connect(
62-
cache, &machine::Cache::statistics_update, this,
63-
&CacheDock::statistics_update);
63+
cache, &machine::Cache::memory_writes_update, this, &CacheDock::memory_writes_update);
64+
connect(cache, &machine::Cache::statistics_update, this, &CacheDock::statistics_update);
6465
}
6566
top_form->setVisible(cache != nullptr);
6667
no_cache->setVisible(cache == nullptr || !cache->get_config().enabled());
@@ -71,27 +72,38 @@ void CacheDock::setup(const machine::Cache *cache, bool cache_after_cache) {
7172
graphicsview->setVisible(cache != nullptr && cache->get_config().enabled());
7273
}
7374

75+
void CacheDock::paintEvent(QPaintEvent *event) {
76+
l_stalled->setText(QString::number(stalled));
77+
l_hit_rate->setText(QString::number(hit_rate, 'f', 3) + QString("%"));
78+
l_speed->setText(QString::number(speed_improv, 'f', 0) + QString("%"));
79+
l_hit->setText(QString::number(hit));
80+
l_miss->setText(QString::number(miss));
81+
l_m_reads->setText(QString::number(memory_reads));
82+
l_m_writes->setText(QString::number(memory_writes));
83+
QDockWidget::paintEvent(event);
84+
}
85+
7486
void CacheDock::hit_update(unsigned val) {
75-
l_hit->setText(QString::number(val));
87+
hit = val;
7688
}
7789

7890
void CacheDock::miss_update(unsigned val) {
79-
l_miss->setText(QString::number(val));
91+
miss = val;
8092
}
8193

8294
void CacheDock::memory_reads_update(unsigned val) {
83-
l_m_reads->setText(QString::number(val));
95+
memory_reads = val;
8496
}
8597

8698
void CacheDock::memory_writes_update(unsigned val) {
87-
l_m_writes->setText(QString::number(val));
99+
memory_writes = val;
88100
}
89101

90102
void CacheDock::statistics_update(
91103
unsigned stalled_cycles,
92104
double speed_improv,
93105
double hit_rate) {
94-
l_stalled->setText(QString::number(stalled_cycles));
95-
l_hit_rate->setText(QString::number(hit_rate, 'f', 3) + QString("%"));
96-
l_speed->setText(QString::number(speed_improv, 'f', 0) + QString("%"));
106+
this->stalled = stalled_cycles;
107+
this->hit = hit_rate;
108+
this->speed_improv = speed_improv;
97109
}

src/gui/windows/cache/cachedock.h

+11
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ class CacheDock : public QDockWidget {
1616

1717
void setup(const machine::Cache *cache, bool cache_after_cache = false);
1818

19+
void paintEvent(QPaintEvent *event) override;
20+
1921
private slots:
2022
void hit_update(unsigned);
2123
void miss_update(unsigned);
@@ -35,6 +37,15 @@ private slots:
3537
QLabel *l_m_reads, *l_m_writes;
3638
GraphicsView *graphicsview;
3739
CacheViewScene *cachescene;
40+
41+
// Statistics
42+
unsigned memory_reads = 0;
43+
unsigned memory_writes = 0;
44+
unsigned hit = 0;
45+
unsigned miss = 0;
46+
unsigned stalled = 0;
47+
double speed_improv = 0.0;
48+
double hit_rate = 0.0;
3849
};
3950

4051
#endif // CACHEDOCK_H

0 commit comments

Comments
 (0)