Skip to content

Commit b940173

Browse files
committed
ProjectLoader: Add renderFps property
1 parent a9268ed commit b940173

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/projectloader.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ ProjectLoader::ProjectLoader(QObject *parent) :
3535
connect(qApp, &QCoreApplication::aboutToQuit, this, &ProjectLoader::clear);
3636

3737
initTimer();
38+
m_renderTimer.start();
3839

3940
// Register pen blocks
4041
ScratchConfiguration::registerExtension(std::make_shared<PenBlocks>());
@@ -97,6 +98,11 @@ bool ProjectLoader::running() const
9798
return m_running;
9899
}
99100

101+
int ProjectLoader::renderFps() const
102+
{
103+
return m_renderFps;
104+
}
105+
100106
IEngine *ProjectLoader::engine() const
101107
{
102108
if (m_loadThread.isRunning())
@@ -202,6 +208,15 @@ void ProjectLoader::timerEvent(QTimerEvent *event)
202208
m_running = !m_running;
203209
emit runningChanged();
204210
}
211+
212+
// FPS counter
213+
if (m_renderTimer.elapsed() >= 1000) {
214+
m_renderFps = m_renderFpsCounter;
215+
m_renderFpsCounter = 0;
216+
emit renderFpsChanged();
217+
m_renderTimer.restart();
218+
} else
219+
m_renderFpsCounter++;
205220
}
206221

207222
event->accept();

src/projectloader.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class ProjectLoader : public QObject
2525
Q_PROPERTY(QString fileName READ fileName WRITE setFileName NOTIFY fileNameChanged)
2626
Q_PROPERTY(bool loadStatus READ loadStatus NOTIFY loadStatusChanged)
2727
Q_PROPERTY(bool running READ running NOTIFY runningChanged)
28+
Q_PROPERTY(int renderFps READ renderFps NOTIFY renderFpsChanged FINAL)
2829
Q_PROPERTY(libscratchcpp::IEngine *engine READ engine NOTIFY engineChanged)
2930
Q_PROPERTY(StageModel *stage READ stage NOTIFY stageChanged)
3031
Q_PROPERTY(QQmlListProperty<SpriteModel> sprites READ sprites NOTIFY spritesChanged)
@@ -98,11 +99,14 @@ class ProjectLoader : public QObject
9899

99100
unsigned int assetCount() const;
100101

102+
int renderFps() const;
103+
101104
signals:
102105
void fileNameChanged();
103106
void loadStatusChanged();
104107
void loadingFinished();
105108
void runningChanged();
109+
void renderFpsChanged();
106110
void engineChanged();
107111
void stageChanged();
108112
void spritesChanged();
@@ -145,6 +149,9 @@ class ProjectLoader : public QObject
145149
QFuture<void> m_loadThread;
146150
libscratchcpp::Project m_project;
147151
bool m_running = false;
152+
QElapsedTimer m_renderTimer;
153+
int m_renderFps = 0;
154+
int m_renderFpsCounter = 0;
148155
libscratchcpp::IEngine *m_engine = nullptr;
149156
libscratchcpp::IEngine *m_oldEngine = nullptr;
150157
QMutex m_engineMutex;

0 commit comments

Comments
 (0)