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