Просмотр исходного кода

general: reduce use of dynamic_cast

Liam 3 лет назад
Родитель
Сommit
4bee333d84
4 измененных файлов с 13 добавлено и 2 удалено
  1. 1 1
      src/android/app/src/main/jni/native.cpp
  2. 8 0
      src/core/core.cpp
  3. 3 0
      src/core/core.h
  4. 1 1
      src/yuzu/game_list_worker.cpp

+ 1 - 1
src/android/app/src/main/jni/native.cpp

@@ -449,7 +449,7 @@ private:
         loader->ReadTitle(entry.title);
         loader->ReadTitle(entry.title);
         loader->ReadIcon(entry.icon);
         loader->ReadIcon(entry.icon);
         if (loader->GetFileType() == Loader::FileType::NRO) {
         if (loader->GetFileType() == Loader::FileType::NRO) {
-            jauto loader_nro = dynamic_cast<Loader::AppLoader_NRO*>(loader.get());
+            jauto loader_nro = reinterpret_cast<Loader::AppLoader_NRO*>(loader.get());
             entry.isHomebrew = loader_nro->IsHomebrew();
             entry.isHomebrew = loader_nro->IsHomebrew();
         } else {
         } else {
             entry.isHomebrew = false;
             entry.isHomebrew = false;

+ 8 - 0
src/core/core.cpp

@@ -880,6 +880,14 @@ const FileSys::ContentProvider& System::GetContentProvider() const {
     return *impl->content_provider;
     return *impl->content_provider;
 }
 }
 
 
+FileSys::ContentProviderUnion& System::GetContentProviderUnion() {
+    return *impl->content_provider;
+}
+
+const FileSys::ContentProviderUnion& System::GetContentProviderUnion() const {
+    return *impl->content_provider;
+}
+
 Service::FileSystem::FileSystemController& System::GetFileSystemController() {
 Service::FileSystem::FileSystemController& System::GetFileSystemController() {
     return impl->fs_controller;
     return impl->fs_controller;
 }
 }

+ 3 - 0
src/core/core.h

@@ -381,6 +381,9 @@ public:
     [[nodiscard]] FileSys::ContentProvider& GetContentProvider();
     [[nodiscard]] FileSys::ContentProvider& GetContentProvider();
     [[nodiscard]] const FileSys::ContentProvider& GetContentProvider() const;
     [[nodiscard]] const FileSys::ContentProvider& GetContentProvider() const;
 
 
+    [[nodiscard]] FileSys::ContentProviderUnion& GetContentProviderUnion();
+    [[nodiscard]] const FileSys::ContentProviderUnion& GetContentProviderUnion() const;
+
     [[nodiscard]] Service::FileSystem::FileSystemController& GetFileSystemController();
     [[nodiscard]] Service::FileSystem::FileSystemController& GetFileSystemController();
     [[nodiscard]] const Service::FileSystem::FileSystemController& GetFileSystemController() const;
     [[nodiscard]] const Service::FileSystem::FileSystemController& GetFileSystemController() const;
 
 

+ 1 - 1
src/yuzu/game_list_worker.cpp

@@ -235,7 +235,7 @@ GameListWorker::~GameListWorker() = default;
 void GameListWorker::AddTitlesToGameList(GameListDir* parent_dir) {
 void GameListWorker::AddTitlesToGameList(GameListDir* parent_dir) {
     using namespace FileSys;
     using namespace FileSys;
 
 
-    const auto& cache = dynamic_cast<ContentProviderUnion&>(system.GetContentProvider());
+    const auto& cache = system.GetContentProviderUnion();
 
 
     auto installed_games = cache.ListEntriesFilterOrigin(std::nullopt, TitleType::Application,
     auto installed_games = cache.ListEntriesFilterOrigin(std::nullopt, TitleType::Application,
                                                          ContentRecordType::Program);
                                                          ContentRecordType::Program);