summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2018-09-07 20:58:59 +0300
committerAndrei Karas <akaras@inbox.ru>2018-09-07 20:58:59 +0300
commit32b9e2070b3cf44b6b38ab0c0383b85e87852d50 (patch)
tree352d7a4c3dcb8fbffadeb127cee0090aa98d073a /src/gui
parentabfc18794cbd9119c110f32e39ea48a00e5b9214 (diff)
downloadmanaplus-32b9e2070b3cf44b6b38ab0c0383b85e87852d50.tar.gz
manaplus-32b9e2070b3cf44b6b38ab0c0383b85e87852d50.tar.bz2
manaplus-32b9e2070b3cf44b6b38ab0c0383b85e87852d50.tar.xz
manaplus-32b9e2070b3cf44b6b38ab0c0383b85e87852d50.zip
Add basic performance counters.
Add in debug window new tab with this counters.
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/widgets/tabs/statdebugtab.cpp60
-rw-r--r--src/gui/widgets/tabs/statdebugtab.h14
2 files changed, 72 insertions, 2 deletions
diff --git a/src/gui/widgets/tabs/statdebugtab.cpp b/src/gui/widgets/tabs/statdebugtab.cpp
index 29fca62de..6d4f8afa4 100644
--- a/src/gui/widgets/tabs/statdebugtab.cpp
+++ b/src/gui/widgets/tabs/statdebugtab.cpp
@@ -20,11 +20,17 @@
#include "gui/widgets/tabs/statdebugtab.h"
+#include "const/utils/timer.h"
+
+#include "gui/widgets/button.h"
#include "gui/widgets/containerplacer.h"
#include "gui/widgets/label.h"
#include "gui/widgets/layouthelper.h"
+#include "gui/windows/chatwindow.h"
+
#include "utils/gettext.h"
+#include "utils/perfstat.h"
#include "utils/stringutils.h"
#include "utils/timer.h"
@@ -33,12 +39,27 @@
StatDebugTab::StatDebugTab(const Widget2 *const widget) :
DebugTab(widget),
// TRANSLATORS: debug window label, logic per second
- mLPSLabel(new Label(this, strprintf(_("LPS: %d"), 0)))
+ mLPSLabel(new Label(this, strprintf(_("LPS: %d"), 0))),
+ // TRANSLATORS: debug window stats reset button
+ mResetButton(new Button(this, _("Reset"), "reset", BUTTON_SKIN, this)),
+ // TRANSLATORS: debug window stats copy button
+ mCopyButton(new Button(this, _("Copy"), "copy", BUTTON_SKIN, this)),
+ mStatLabels(),
+ mDrawIndex(0)
{
LayoutHelper h(this);
ContainerPlacer place = h.getPlacer(0, 0);
place(0, 0, mLPSLabel, 2, 1);
+ place(0, 1, mResetButton, 1, 1);
+ place(1, 1, mCopyButton, 1, 1);
+ for (int f = 1; f < PERFSTAT_LAST_STAT; f ++)
+ {
+ mStatLabels[f - 1] = new Label(this,
+ // TRANSLATORS: debug window stat label
+ strprintf(_("stat%d: %d (%d) ms"), f, 0, 0));
+ place(0, f + 1, mStatLabels[f - 1], 2, 1);
+ }
place.getCell().matchColWidth(0, 0);
place = h.getPlacer(0, 1);
@@ -50,5 +71,42 @@ void StatDebugTab::logic()
BLOCK_START("StatDebugTab::logic")
// TRANSLATORS: debug window label, logic per second
mLPSLabel->setCaption(strprintf(_("LPS: %d"), lps));
+
+ for (int f = 1; f < PERFSTAT_LAST_STAT; f ++)
+ {
+ mStatLabels[f - 1]->setCaption(
+ // TRANSLATORS: debug window stat label
+ strprintf(_("stat%d: %d (%d) ms"),
+ f,
+ Perf::getTime(prevPerfFrameId, f) * MILLISECONDS_IN_A_TICK,
+ Perf::getWorstTime(f) * MILLISECONDS_IN_A_TICK));
+ }
+ mDrawIndex = prevPerfFrameId;
BLOCK_END("StatDebugTab::logic")
}
+
+void StatDebugTab::action(const ActionEvent &event)
+{
+ const std::string &eventId = event.getId();
+ if (eventId == "reset")
+ {
+ Perf::init();
+ }
+ else if (eventId == "copy")
+ {
+ std::string data("perf:");
+ for (int f = 1; f < PERFSTAT_LAST_STAT; f ++)
+ {
+ data.append(strprintf(" %d",
+ Perf::getTime(mDrawIndex, f) * MILLISECONDS_IN_A_TICK));
+ }
+ data.append(",");
+ for (int f = 1; f < PERFSTAT_LAST_STAT; f ++)
+ {
+ data.append(strprintf(" %d",
+ Perf::getWorstTime(f) * MILLISECONDS_IN_A_TICK));
+ }
+ chatWindow->addInputText(data,
+ true);
+ }
+}
diff --git a/src/gui/widgets/tabs/statdebugtab.h b/src/gui/widgets/tabs/statdebugtab.h
index d52ff63af..57b2e9f4a 100644
--- a/src/gui/widgets/tabs/statdebugtab.h
+++ b/src/gui/widgets/tabs/statdebugtab.h
@@ -23,9 +23,15 @@
#include "gui/widgets/tabs/debugtab.h"
+#include "const/utils/perfstat.h"
+
+#include "listeners/actionlistener.h"
+
+class Button;
class Label;
-class StatDebugTab final : public DebugTab
+class StatDebugTab final : public DebugTab,
+ public ActionListener
{
friend class DebugWindow;
@@ -36,8 +42,14 @@ class StatDebugTab final : public DebugTab
void logic() override final;
+ void action(const ActionEvent &event) override;
+
private:
Label *mLPSLabel A_NONNULLPOINTER;
+ Button *mResetButton A_NONNULLPOINTER;
+ Button *mCopyButton A_NONNULLPOINTER;
+ Label *mStatLabels[PERFSTAT_LAST_STAT - 1] A_NONNULLPOINTER;
+ size_t mDrawIndex;
};
#endif // GUI_WIDGETS_TABS_STATDEBUGTAB_H