diff --git a/es-app/src/views/GamelistView.cpp b/es-app/src/views/GamelistView.cpp index e1619fe7f..b743d9364 100644 --- a/es-app/src/views/GamelistView.cpp +++ b/es-app/src/views/GamelistView.cpp @@ -433,18 +433,25 @@ void GamelistView::updateView(const CursorState& state) return; } + bool loadedTexture {false}; + + if (mCarousel != nullptr && mCarousel->isScrolling()) { + mCarousel->onDemandTextureLoad(); + loadedTexture = true; + } + FileData* file {(mPrimary->size() > 0 && state == CursorState::CURSOR_STOPPED) ? mPrimary->getSelected() : nullptr}; - if (mCarousel != nullptr) - mCarousel->onDemandTextureLoad(); - // If the game data has already been rendered to the view, then skip it this time. // This also happens when fast-scrolling. if (file == mLastUpdated) return; + if (mCarousel != nullptr && !loadedTexture) + mCarousel->onDemandTextureLoad(); + if (state == CursorState::CURSOR_STOPPED) mLastUpdated = file; diff --git a/es-core/src/components/primary/CarouselComponent.h b/es-core/src/components/primary/CarouselComponent.h index 1716e0b84..916ea6a25 100644 --- a/es-core/src/components/primary/CarouselComponent.h +++ b/es-core/src/components/primary/CarouselComponent.h @@ -58,6 +58,7 @@ public: void setItemType(std::string itemType) { mItemType = itemType; } const std::string& getDefaultItem() { return mDefaultItem; } void setDefaultItem(std::string defaultItem) { mDefaultItem = defaultItem; } + bool isScrolling() const override { return List::isScrolling(); } void setCursorChangedCallback(const std::function& func) override { @@ -83,7 +84,6 @@ private: NavigationSounds::getInstance().playThemeNavigationSound(SYSTEMBROWSESOUND); } - bool isScrolling() const override { return List::isScrolling(); } void stopScrolling() override { List::stopScrolling();