From 410c70ab89ac1adaf69d88b076f78960c10f3371 Mon Sep 17 00:00:00 2001 From: Zach Nelson Date: Mon, 23 Feb 2026 06:29:18 -0600 Subject: [PATCH] perf: UITheme::getMetrics const and const-ref usage (#1094) ## Summary **What is the goal of this PR?** Small cleanup to make getTheme and getMetrics methods on UITheme const. They return const refs, so updated call sites to use `const auto&`. Realistically this won't make much performance difference, but it better conveys the nature of theme metrics being shared const state. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**NO**_ --- src/activities/home/HomeActivity.cpp | 4 ++-- src/activities/home/MyLibraryActivity.cpp | 2 +- src/activities/home/RecentBooksActivity.cpp | 2 +- src/activities/network/CalibreConnectActivity.cpp | 2 +- src/activities/network/CrossPointWebServerActivity.cpp | 4 ++-- src/activities/network/NetworkModeSelectionActivity.cpp | 2 +- src/activities/network/WifiSelectionActivity.cpp | 4 ++-- src/activities/reader/EpubReaderActivity.cpp | 4 ++-- src/activities/reader/TxtReaderActivity.cpp | 4 ++-- src/activities/settings/ButtonRemapActivity.cpp | 2 +- src/activities/settings/CalibreSettingsActivity.cpp | 2 +- src/activities/settings/ClearCacheActivity.cpp | 2 +- src/activities/settings/KOReaderAuthActivity.cpp | 2 +- src/activities/settings/KOReaderSettingsActivity.cpp | 2 +- src/activities/settings/OtaUpdateActivity.cpp | 2 +- src/activities/settings/SettingsActivity.cpp | 2 +- src/activities/util/KeyboardEntryActivity.cpp | 2 +- src/components/UITheme.h | 4 ++-- src/components/themes/BaseTheme.cpp | 2 +- 19 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/activities/home/HomeActivity.cpp b/src/activities/home/HomeActivity.cpp index 273f366b..dc0d47be 100644 --- a/src/activities/home/HomeActivity.cpp +++ b/src/activities/home/HomeActivity.cpp @@ -116,7 +116,7 @@ void HomeActivity::onEnter() { selectorIndex = 0; - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); loadRecentBooks(metrics.homeRecentBooksCount); // Trigger first update @@ -212,7 +212,7 @@ void HomeActivity::loop() { } void HomeActivity::render(Activity::RenderLock&&) { - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); diff --git a/src/activities/home/MyLibraryActivity.cpp b/src/activities/home/MyLibraryActivity.cpp index 1793e1b8..56799e91 100644 --- a/src/activities/home/MyLibraryActivity.cpp +++ b/src/activities/home/MyLibraryActivity.cpp @@ -201,7 +201,7 @@ void MyLibraryActivity::render(Activity::RenderLock&&) { const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); std::string folderName = (basepath == "/") ? tr(STR_SD_CARD) : basepath.substr(basepath.rfind('/') + 1); GUI.drawHeader(renderer, Rect{0, metrics.topPadding, pageWidth, metrics.headerHeight}, folderName.c_str()); diff --git a/src/activities/home/RecentBooksActivity.cpp b/src/activities/home/RecentBooksActivity.cpp index 2ea9ff01..0b519d31 100644 --- a/src/activities/home/RecentBooksActivity.cpp +++ b/src/activities/home/RecentBooksActivity.cpp @@ -88,7 +88,7 @@ void RecentBooksActivity::render(Activity::RenderLock&&) { const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); GUI.drawHeader(renderer, Rect{0, metrics.topPadding, pageWidth, metrics.headerHeight}, tr(STR_MENU_RECENT_BOOKS)); diff --git a/src/activities/network/CalibreConnectActivity.cpp b/src/activities/network/CalibreConnectActivity.cpp index 056513bc..69014cf4 100644 --- a/src/activities/network/CalibreConnectActivity.cpp +++ b/src/activities/network/CalibreConnectActivity.cpp @@ -169,7 +169,7 @@ void CalibreConnectActivity::loop() { } void CalibreConnectActivity::render(Activity::RenderLock&&) { - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); diff --git a/src/activities/network/CrossPointWebServerActivity.cpp b/src/activities/network/CrossPointWebServerActivity.cpp index d326c842..beee4f71 100644 --- a/src/activities/network/CrossPointWebServerActivity.cpp +++ b/src/activities/network/CrossPointWebServerActivity.cpp @@ -343,7 +343,7 @@ void CrossPointWebServerActivity::render(Activity::RenderLock&&) { // Subactivities handle their own rendering if (state == WebServerActivityState::SERVER_RUNNING || state == WebServerActivityState::AP_STARTING) { renderer.clearScreen(); - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); @@ -386,7 +386,7 @@ void drawQRCode(const GfxRenderer& renderer, const int x, const int y, const std } void CrossPointWebServerActivity::renderServerRunning() const { - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); GUI.drawHeader(renderer, Rect{0, metrics.topPadding, pageWidth, metrics.headerHeight}, diff --git a/src/activities/network/NetworkModeSelectionActivity.cpp b/src/activities/network/NetworkModeSelectionActivity.cpp index af300802..9bba7552 100644 --- a/src/activities/network/NetworkModeSelectionActivity.cpp +++ b/src/activities/network/NetworkModeSelectionActivity.cpp @@ -57,7 +57,7 @@ void NetworkModeSelectionActivity::loop() { void NetworkModeSelectionActivity::render(Activity::RenderLock&&) { renderer.clearScreen(); - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); diff --git a/src/activities/network/WifiSelectionActivity.cpp b/src/activities/network/WifiSelectionActivity.cpp index 9e7b7afa..03c5689b 100644 --- a/src/activities/network/WifiSelectionActivity.cpp +++ b/src/activities/network/WifiSelectionActivity.cpp @@ -471,7 +471,7 @@ void WifiSelectionActivity::render(Activity::RenderLock&&) { renderer.clearScreen(); - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); @@ -514,7 +514,7 @@ void WifiSelectionActivity::render(Activity::RenderLock&&) { } void WifiSelectionActivity::renderNetworkList() const { - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); diff --git a/src/activities/reader/EpubReaderActivity.cpp b/src/activities/reader/EpubReaderActivity.cpp index 3e910081..31257ca9 100644 --- a/src/activities/reader/EpubReaderActivity.cpp +++ b/src/activities/reader/EpubReaderActivity.cpp @@ -526,7 +526,7 @@ void EpubReaderActivity::render(Activity::RenderLock&& lock) { orientedMarginRight += SETTINGS.screenMargin; orientedMarginBottom += SETTINGS.screenMargin; - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); // Add status bar margin if (SETTINGS.statusBar != CrossPointSettings::STATUS_BAR_MODE::NONE) { @@ -713,7 +713,7 @@ void EpubReaderActivity::renderContents(std::unique_ptr page, const int or void EpubReaderActivity::renderStatusBar(const int orientedMarginRight, const int orientedMarginBottom, const int orientedMarginLeft) const { - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); // determine visible status bar elements const bool showProgressPercentage = SETTINGS.statusBar == CrossPointSettings::STATUS_BAR_MODE::FULL; diff --git a/src/activities/reader/TxtReaderActivity.cpp b/src/activities/reader/TxtReaderActivity.cpp index 64889ec0..1f535c97 100644 --- a/src/activities/reader/TxtReaderActivity.cpp +++ b/src/activities/reader/TxtReaderActivity.cpp @@ -139,7 +139,7 @@ void TxtReaderActivity::initializeReader() { orientedMarginRight += cachedScreenMargin; orientedMarginBottom += cachedScreenMargin; - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); // Add status bar margin if (SETTINGS.statusBar != CrossPointSettings::STATUS_BAR_MODE::NONE) { @@ -476,7 +476,7 @@ void TxtReaderActivity::renderStatusBar(const int orientedMarginRight, const int const bool showBatteryPercentage = SETTINGS.hideBatteryPercentage == CrossPointSettings::HIDE_BATTERY_PERCENTAGE::HIDE_NEVER; - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto screenHeight = renderer.getScreenHeight(); // Adjust text position upward when progress bar is shown to avoid overlap const auto textY = screenHeight - orientedMarginBottom - 4; diff --git a/src/activities/settings/ButtonRemapActivity.cpp b/src/activities/settings/ButtonRemapActivity.cpp index 283d03d8..92c3140d 100644 --- a/src/activities/settings/ButtonRemapActivity.cpp +++ b/src/activities/settings/ButtonRemapActivity.cpp @@ -104,7 +104,7 @@ void ButtonRemapActivity::render(Activity::RenderLock&&) { return "-"; }; - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); diff --git a/src/activities/settings/CalibreSettingsActivity.cpp b/src/activities/settings/CalibreSettingsActivity.cpp index adb73986..421a0b7e 100644 --- a/src/activities/settings/CalibreSettingsActivity.cpp +++ b/src/activities/settings/CalibreSettingsActivity.cpp @@ -114,7 +114,7 @@ void CalibreSettingsActivity::handleSelection() { void CalibreSettingsActivity::render(Activity::RenderLock&&) { renderer.clearScreen(); - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); GUI.drawHeader(renderer, Rect{0, metrics.topPadding, pageWidth, metrics.headerHeight}, tr(STR_OPDS_BROWSER)); diff --git a/src/activities/settings/ClearCacheActivity.cpp b/src/activities/settings/ClearCacheActivity.cpp index b07758d0..ca3a9a6a 100644 --- a/src/activities/settings/ClearCacheActivity.cpp +++ b/src/activities/settings/ClearCacheActivity.cpp @@ -19,7 +19,7 @@ void ClearCacheActivity::onEnter() { void ClearCacheActivity::onExit() { ActivityWithSubactivity::onExit(); } void ClearCacheActivity::render(Activity::RenderLock&&) { - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); diff --git a/src/activities/settings/KOReaderAuthActivity.cpp b/src/activities/settings/KOReaderAuthActivity.cpp index 1a487636..c6367b35 100644 --- a/src/activities/settings/KOReaderAuthActivity.cpp +++ b/src/activities/settings/KOReaderAuthActivity.cpp @@ -91,7 +91,7 @@ void KOReaderAuthActivity::onExit() { void KOReaderAuthActivity::render(Activity::RenderLock&&) { renderer.clearScreen(); - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); diff --git a/src/activities/settings/KOReaderSettingsActivity.cpp b/src/activities/settings/KOReaderSettingsActivity.cpp index 1a5aba90..e629a775 100644 --- a/src/activities/settings/KOReaderSettingsActivity.cpp +++ b/src/activities/settings/KOReaderSettingsActivity.cpp @@ -136,7 +136,7 @@ void KOReaderSettingsActivity::handleSelection() { void KOReaderSettingsActivity::render(Activity::RenderLock&&) { renderer.clearScreen(); - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); diff --git a/src/activities/settings/OtaUpdateActivity.cpp b/src/activities/settings/OtaUpdateActivity.cpp index 8efc3013..d9578bff 100644 --- a/src/activities/settings/OtaUpdateActivity.cpp +++ b/src/activities/settings/OtaUpdateActivity.cpp @@ -84,7 +84,7 @@ void OtaUpdateActivity::render(Activity::RenderLock&&) { return; } - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); diff --git a/src/activities/settings/SettingsActivity.cpp b/src/activities/settings/SettingsActivity.cpp index 6cb2dfee..2ffa2b2f 100644 --- a/src/activities/settings/SettingsActivity.cpp +++ b/src/activities/settings/SettingsActivity.cpp @@ -216,7 +216,7 @@ void SettingsActivity::render(Activity::RenderLock&&) { const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); GUI.drawHeader(renderer, Rect{0, metrics.topPadding, pageWidth, metrics.headerHeight}, tr(STR_SETTINGS_TITLE), CROSSPOINT_VERSION); diff --git a/src/activities/util/KeyboardEntryActivity.cpp b/src/activities/util/KeyboardEntryActivity.cpp index be38b105..41e6e56a 100644 --- a/src/activities/util/KeyboardEntryActivity.cpp +++ b/src/activities/util/KeyboardEntryActivity.cpp @@ -195,7 +195,7 @@ void KeyboardEntryActivity::render(Activity::RenderLock&&) { const auto pageWidth = renderer.getScreenWidth(); const auto pageHeight = renderer.getScreenHeight(); - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); GUI.drawHeader(renderer, Rect{0, metrics.topPadding, pageWidth, metrics.headerHeight}, title.c_str()); diff --git a/src/components/UITheme.h b/src/components/UITheme.h index 3acf8059..054ee89e 100644 --- a/src/components/UITheme.h +++ b/src/components/UITheme.h @@ -14,8 +14,8 @@ class UITheme { UITheme(); static UITheme& getInstance() { return instance; } - const ThemeMetrics& getMetrics() { return *currentMetrics; } - const BaseTheme& getTheme() { return *currentTheme; } + const ThemeMetrics& getMetrics() const { return *currentMetrics; } + const BaseTheme& getTheme() const { return *currentTheme; } void reload(); void setTheme(CrossPointSettings::UI_THEME type); static int getNumberOfItemsPerPage(const GfxRenderer& renderer, bool hasHeader, bool hasTabBar, bool hasButtonHints, diff --git a/src/components/themes/BaseTheme.cpp b/src/components/themes/BaseTheme.cpp index a93fe6b3..ce03923b 100644 --- a/src/components/themes/BaseTheme.cpp +++ b/src/components/themes/BaseTheme.cpp @@ -736,7 +736,7 @@ void BaseTheme::drawReadingProgressBar(const GfxRenderer& renderer, const size_t } void BaseTheme::drawHelpText(const GfxRenderer& renderer, Rect rect, const char* label) const { - auto metrics = UITheme::getInstance().getMetrics(); + const auto& metrics = UITheme::getInstance().getMetrics(); auto truncatedLabel = renderer.truncatedText(SMALL_FONT_ID, label, rect.width - metrics.contentSidePadding * 2, EpdFontFamily::REGULAR); renderer.drawCenteredText(SMALL_FONT_ID, rect.y, truncatedLabel.c_str());