summaryrefslogtreecommitdiff
path: root/src/gui/widgets/tabs/statdebugtab.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets/tabs/statdebugtab.cpp')
-rw-r--r--src/gui/widgets/tabs/statdebugtab.cpp60
1 files changed, 59 insertions, 1 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);
+ }
+}