mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-04-10 19:15:13 +00:00
Optimized HelpComponent updates by caching the icons
This commit is contained in:
parent
d814431496
commit
76423107ad
|
|
@ -197,6 +197,7 @@ void GuiMenu::openUIOptions()
|
|||
s->setNeedsReloading();
|
||||
s->setNeedsGoToStart();
|
||||
s->setNeedsCollectionsUpdate();
|
||||
s->setNeedsClearHelpPromptsImageCache();
|
||||
s->setInvalidateCachedBackground();
|
||||
}
|
||||
});
|
||||
|
|
@ -211,6 +212,7 @@ void GuiMenu::openUIOptions()
|
|||
Settings::getInstance()->setString("ThemeVariant", themeVariant->getSelected());
|
||||
s->setNeedsSaving();
|
||||
s->setNeedsReloading();
|
||||
s->setNeedsClearHelpPromptsImageCache();
|
||||
s->setInvalidateCachedBackground();
|
||||
}
|
||||
});
|
||||
|
|
@ -271,6 +273,7 @@ void GuiMenu::openUIOptions()
|
|||
Settings::getInstance()->setString("ThemeColorScheme", themeColorScheme->getSelected());
|
||||
s->setNeedsSaving();
|
||||
s->setNeedsReloading();
|
||||
s->setNeedsClearHelpPromptsImageCache();
|
||||
s->setInvalidateCachedBackground();
|
||||
}
|
||||
});
|
||||
|
|
@ -323,6 +326,7 @@ void GuiMenu::openUIOptions()
|
|||
Settings::getInstance()->setString("ThemeFontSize", themeFontSize->getSelected());
|
||||
s->setNeedsSaving();
|
||||
s->setNeedsReloading();
|
||||
s->setNeedsClearHelpPromptsImageCache();
|
||||
s->setInvalidateCachedBackground();
|
||||
}
|
||||
});
|
||||
|
|
@ -366,6 +370,7 @@ void GuiMenu::openUIOptions()
|
|||
Settings::getInstance()->setString("ThemeAspectRatio", themeAspectRatio->getSelected());
|
||||
s->setNeedsSaving();
|
||||
s->setNeedsReloading();
|
||||
s->setNeedsClearHelpPromptsImageCache();
|
||||
s->setInvalidateCachedBackground();
|
||||
}
|
||||
});
|
||||
|
|
@ -524,6 +529,7 @@ void GuiMenu::openUIOptions()
|
|||
Settings::getInstance()->setString("ThemeLanguage", themeLanguage->getSelected());
|
||||
s->setNeedsSaving();
|
||||
s->setNeedsReloading();
|
||||
s->setNeedsClearHelpPromptsImageCache();
|
||||
s->setInvalidateCachedBackground();
|
||||
}
|
||||
});
|
||||
|
|
@ -601,6 +607,7 @@ void GuiMenu::openUIOptions()
|
|||
s->setNeedsRescanROMDirectory();
|
||||
s->setNeedsReloading();
|
||||
s->setNeedsCollectionsUpdate();
|
||||
s->setNeedsClearHelpPromptsImageCache();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -1356,6 +1363,7 @@ void GuiMenu::openInputDeviceOptions()
|
|||
Settings::getInstance()->setString("InputControllerType",
|
||||
inputControllerType->getSelected());
|
||||
s->setNeedsSaving();
|
||||
s->setNeedsClearHelpPromptsImageCache();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -2395,6 +2403,7 @@ void GuiMenu::openThemeDownloader(GuiSettings* settings)
|
|||
}
|
||||
else {
|
||||
openUIOptions();
|
||||
mWindow->clearHelpPromptsImageCache();
|
||||
mWindow->invalidateCachedBackground();
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ GuiSettings::GuiSettings(std::string title)
|
|||
, mNeedsGoToSystem {false}
|
||||
, mNeedsGoToGroupedCollections {false}
|
||||
, mNeedsUpdateStatusComponents {false}
|
||||
, mNeedsClearHelpPromptsImageCache {false}
|
||||
, mInvalidateCachedBackground {false}
|
||||
{
|
||||
addChild(&mMenu);
|
||||
|
|
@ -154,6 +155,9 @@ void GuiSettings::save()
|
|||
mWindow->updateSystemStatusComponents();
|
||||
}
|
||||
|
||||
if (mNeedsClearHelpPromptsImageCache)
|
||||
mWindow->clearHelpPromptsImageCache();
|
||||
|
||||
if (mNeedsCollectionsUpdate) {
|
||||
auto state = ViewController::getInstance()->getState();
|
||||
// If we're in any view other than the grouped custom collections, always jump to the
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ public:
|
|||
};
|
||||
void setNeedsGoToGroupedCollections() { mNeedsGoToGroupedCollections = true; }
|
||||
void setNeedsUpdateStatusComponents() { mNeedsUpdateStatusComponents = true; }
|
||||
void setNeedsClearHelpPromptsImageCache() { mNeedsClearHelpPromptsImageCache = true; }
|
||||
void setNeedsCloseMenu(std::function<void()> closeFunction)
|
||||
{
|
||||
mCloseMenuFunction = closeFunction;
|
||||
|
|
@ -86,6 +87,7 @@ private:
|
|||
bool mNeedsGoToSystem;
|
||||
bool mNeedsGoToGroupedCollections;
|
||||
bool mNeedsUpdateStatusComponents;
|
||||
bool mNeedsClearHelpPromptsImageCache;
|
||||
bool mInvalidateCachedBackground;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -217,6 +217,7 @@ void Window::deinit()
|
|||
(*it)->onHide();
|
||||
|
||||
mPostprocessedBackground.reset();
|
||||
sHelpPromptsImageCache.clear();
|
||||
mHelp.reset();
|
||||
if (mHelpComponents != nullptr) {
|
||||
mHelpComponents->clear();
|
||||
|
|
|
|||
|
|
@ -123,6 +123,12 @@ public:
|
|||
void renderHelpPromptsEarly(); // Used to render HelpPrompts before a fade.
|
||||
void setHelpPrompts(const std::vector<HelpPrompt>& prompts);
|
||||
|
||||
std::map<std::string, std::shared_ptr<ImageComponent>>& getHelpPromptsImageCache()
|
||||
{
|
||||
return sHelpPromptsImageCache;
|
||||
}
|
||||
void clearHelpPromptsImageCache() { sHelpPromptsImageCache.clear(); }
|
||||
|
||||
// GuiInfoPopup notifications.
|
||||
void queueInfoPopup(const std::string& message, const int& duration)
|
||||
{
|
||||
|
|
@ -210,6 +216,8 @@ private:
|
|||
unsigned int color;
|
||||
};
|
||||
|
||||
static inline std::map<std::string, std::shared_ptr<ImageComponent>> sHelpPromptsImageCache;
|
||||
|
||||
Renderer* mRenderer;
|
||||
std::vector<std::unique_ptr<HelpComponent>>* mHelpComponents;
|
||||
std::unique_ptr<HelpComponent> mHelp;
|
||||
|
|
|
|||
|
|
@ -106,7 +106,6 @@ void ComponentGrid::setEntry(const std::shared_ptr<GuiComponent>& comp,
|
|||
{
|
||||
assert(pos.x >= 0 && pos.x < mGridSize.x && pos.y >= 0 && pos.y < mGridSize.y);
|
||||
assert(comp != nullptr);
|
||||
assert(comp->getParent() == nullptr);
|
||||
comp->setAutoCalcExtent(autoCalcExtent);
|
||||
|
||||
GridEntry entry {pos, size, comp, canFocus, resize, updateType, border};
|
||||
|
|
|
|||
|
|
@ -611,8 +611,18 @@ void HelpComponent::updateGrid()
|
|||
std::find(mEntries.cbegin(), mEntries.cend(), (*it).first) == mEntries.cend())
|
||||
continue;
|
||||
|
||||
std::shared_ptr<ImageComponent> icon {std::make_shared<ImageComponent>(false, true)};
|
||||
std::shared_ptr<ImageComponent> icon;
|
||||
auto& imageCache = mWindow->getHelpPromptsImageCache();
|
||||
|
||||
if (imageCache.find(mIconPathMap[it->first]) != imageCache.end()) {
|
||||
icon = imageCache[mIconPathMap[it->first]];
|
||||
}
|
||||
else {
|
||||
icon = std::make_shared<ImageComponent>(false, true);
|
||||
icon->setImage(mIconPathMap[it->first]);
|
||||
imageCache[mIconPathMap[it->first]] = icon;
|
||||
}
|
||||
|
||||
icon->setColorShift(isDimmed ? mStyleIconColorDimmed : mStyleIconColor);
|
||||
icon->setResize(0, height);
|
||||
icon->setOpacity(isDimmed ? mStyleOpacityDimmed : mStyleOpacity);
|
||||
|
|
|
|||
Loading…
Reference in a new issue