Add 'printFPS' config entry to continuously print FPS to console
Useful on platforms that don't have window decorations.
This commit is contained in:
parent
b4bca7ea3b
commit
7cbf81c83a
|
@ -17,6 +17,14 @@
|
||||||
# debugMode=false
|
# debugMode=false
|
||||||
|
|
||||||
|
|
||||||
|
# Continuously print average FPS to console.
|
||||||
|
# This setting does not affect the window title
|
||||||
|
# FPS display toggled via F2
|
||||||
|
# (default: disabled)
|
||||||
|
#
|
||||||
|
# printFPS=false
|
||||||
|
|
||||||
|
|
||||||
# Game window is resizable
|
# Game window is resizable
|
||||||
# (default: disabled)
|
# (default: disabled)
|
||||||
#
|
#
|
||||||
|
|
|
@ -142,6 +142,7 @@ namespace po = boost::program_options;
|
||||||
Config::Config()
|
Config::Config()
|
||||||
: rgssVersion(0),
|
: rgssVersion(0),
|
||||||
debugMode(false),
|
debugMode(false),
|
||||||
|
printFPS(false),
|
||||||
winResizable(false),
|
winResizable(false),
|
||||||
fullscreen(false),
|
fullscreen(false),
|
||||||
fixedAspectRatio(true),
|
fixedAspectRatio(true),
|
||||||
|
@ -169,6 +170,7 @@ void Config::read(int argc, char *argv[])
|
||||||
#define PO_DESC_ALL \
|
#define PO_DESC_ALL \
|
||||||
PO_DESC(rgssVersion, int) \
|
PO_DESC(rgssVersion, int) \
|
||||||
PO_DESC(debugMode, bool) \
|
PO_DESC(debugMode, bool) \
|
||||||
|
PO_DESC(printFPS, bool) \
|
||||||
PO_DESC(winResizable, bool) \
|
PO_DESC(winResizable, bool) \
|
||||||
PO_DESC(fullscreen, bool) \
|
PO_DESC(fullscreen, bool) \
|
||||||
PO_DESC(fixedAspectRatio, bool) \
|
PO_DESC(fixedAspectRatio, bool) \
|
||||||
|
|
44
src/config.h
44
src/config.h
|
@ -25,11 +25,55 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
struct TouchOverlay
|
||||||
|
{
|
||||||
|
std::string image;
|
||||||
|
|
||||||
|
struct Button
|
||||||
|
{
|
||||||
|
enum Shape
|
||||||
|
{
|
||||||
|
Rectangle,
|
||||||
|
Circle,
|
||||||
|
Triangle
|
||||||
|
};
|
||||||
|
|
||||||
|
std::string id;
|
||||||
|
std::string target;
|
||||||
|
Shape shape;
|
||||||
|
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
|
||||||
|
union
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
} r;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
int radius;
|
||||||
|
} c;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
int x1, y1;
|
||||||
|
int x2, y2;
|
||||||
|
} t;
|
||||||
|
} u;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<Button> buttons;
|
||||||
|
};
|
||||||
|
|
||||||
struct Config
|
struct Config
|
||||||
{
|
{
|
||||||
int rgssVersion;
|
int rgssVersion;
|
||||||
|
|
||||||
bool debugMode;
|
bool debugMode;
|
||||||
|
bool printFPS;
|
||||||
|
|
||||||
bool winResizable;
|
bool winResizable;
|
||||||
bool fullscreen;
|
bool fullscreen;
|
||||||
|
|
|
@ -87,12 +87,14 @@ void EventThread::process(RGSSThreadData &rtData)
|
||||||
|
|
||||||
fps.lastFrame = SDL_GetPerformanceCounter();
|
fps.lastFrame = SDL_GetPerformanceCounter();
|
||||||
fps.displayCounter = 0;
|
fps.displayCounter = 0;
|
||||||
fps.displaying = false;
|
|
||||||
fps.immInitFlag = false;
|
|
||||||
fps.immFiniFlag = false;
|
|
||||||
fps.acc = 0;
|
fps.acc = 0;
|
||||||
fps.accDiv = 0;
|
fps.accDiv = 0;
|
||||||
|
|
||||||
|
if (rtData.config.printFPS)
|
||||||
|
fps.sendUpdates.set();
|
||||||
|
|
||||||
|
bool displayingFPS = false;
|
||||||
|
|
||||||
bool cursorInWindow = false;
|
bool cursorInWindow = false;
|
||||||
bool windowFocused = false;
|
bool windowFocused = false;
|
||||||
|
|
||||||
|
@ -210,14 +212,18 @@ void EventThread::process(RGSSThreadData &rtData)
|
||||||
|
|
||||||
if (event.key.keysym.scancode == SDL_SCANCODE_F2)
|
if (event.key.keysym.scancode == SDL_SCANCODE_F2)
|
||||||
{
|
{
|
||||||
if (!fps.displaying)
|
if (!displayingFPS)
|
||||||
{
|
{
|
||||||
fps.immInitFlag = true;
|
fps.immInitFlag.set();
|
||||||
fps.displaying = true;
|
fps.sendUpdates.set();
|
||||||
|
displayingFPS = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fps.displaying = false;
|
displayingFPS = false;
|
||||||
|
|
||||||
|
if (!rtData.config.printFPS)
|
||||||
|
fps.sendUpdates.clear();
|
||||||
|
|
||||||
if (fullscreen)
|
if (fullscreen)
|
||||||
{
|
{
|
||||||
|
@ -333,7 +339,10 @@ void EventThread::process(RGSSThreadData &rtData)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UPDATE_FPS :
|
case UPDATE_FPS :
|
||||||
if (!fps.displaying)
|
if (rtData.config.printFPS)
|
||||||
|
Debug() << "FPS:" << event.user.code;
|
||||||
|
|
||||||
|
if (!fps.sendUpdates)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
snprintf(buffer, sizeof(buffer), "%s - %d FPS",
|
snprintf(buffer, sizeof(buffer), "%s - %d FPS",
|
||||||
|
@ -458,7 +467,7 @@ bool EventThread::getShowCursor() const
|
||||||
|
|
||||||
void EventThread::notifyFrame()
|
void EventThread::notifyFrame()
|
||||||
{
|
{
|
||||||
if (!fps.displaying)
|
if (!fps.sendUpdates)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
uint64_t current = SDL_GetPerformanceCounter();
|
uint64_t current = SDL_GetPerformanceCounter();
|
||||||
|
@ -467,8 +476,8 @@ void EventThread::notifyFrame()
|
||||||
|
|
||||||
if (fps.immInitFlag)
|
if (fps.immInitFlag)
|
||||||
{
|
{
|
||||||
fps.immInitFlag = false;
|
fps.immInitFlag.clear();
|
||||||
fps.immFiniFlag = true;
|
fps.immFiniFlag.set();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -484,7 +493,7 @@ void EventThread::notifyFrame()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fps.displayCounter = 0;
|
fps.displayCounter = 0;
|
||||||
fps.immFiniFlag = false;
|
fps.immFiniFlag.clear();
|
||||||
|
|
||||||
int32_t avgFPS = fps.acc / fps.accDiv;
|
int32_t avgFPS = fps.acc / fps.accDiv;
|
||||||
fps.acc = fps.accDiv = 0;
|
fps.acc = fps.accDiv = 0;
|
||||||
|
|
|
@ -98,9 +98,9 @@ private:
|
||||||
{
|
{
|
||||||
uint64_t lastFrame;
|
uint64_t lastFrame;
|
||||||
uint64_t displayCounter;
|
uint64_t displayCounter;
|
||||||
bool displaying;
|
AtomicFlag sendUpdates;
|
||||||
bool immInitFlag;
|
AtomicFlag immInitFlag;
|
||||||
bool immFiniFlag;
|
AtomicFlag immFiniFlag;
|
||||||
double acc;
|
double acc;
|
||||||
uint32_t accDiv;
|
uint32_t accDiv;
|
||||||
} fps;
|
} fps;
|
||||||
|
|
Loading…
Reference in New Issue