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 273f366bd..dc0d47be6 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 1793e1b81..56799e913 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 2ea9ff011..0b519d317 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 056513bc1..69014cf4b 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 d326c842f..beee4f715 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 af3008022..9bba75528 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 9e7b7afac..03c5689b3 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 3e910081b..31257ca94 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 64889ec03..1f535c971 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 283d03d8a..92c3140d1 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 adb73986e..421a0b7ef 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 b07758d03..ca3a9a6a7 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 1a487636e..c6367b356 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 1a5aba90b..e629a7757 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 8efc30132..d9578bff4 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 6cb2dfee3..2ffa2b2fb 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 be38b105f..41e6e56a2 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 3acf8059b..054ee89e8 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 a93fe6b3f..ce03923bc 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());