mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-10 08:09:26 +01:00
DolphinWX: Sync custom title changes on game list rescan
This commit is contained in:
parent
7d60f03acb
commit
d5bf6f1bbc
@ -421,7 +421,7 @@ void GameListCtrl::RefreshList()
|
||||
std::unique_lock<std::mutex> lk(m_title_database_mutex);
|
||||
for (const auto& drive : cdio_get_devices())
|
||||
{
|
||||
auto file = std::make_shared<GameListItem>(drive, m_title_database);
|
||||
auto file = std::make_shared<GameListItem>(drive);
|
||||
if (file->IsValid())
|
||||
m_shown_files.push_back(file);
|
||||
}
|
||||
@ -780,7 +780,7 @@ void GameListCtrl::RescanList()
|
||||
}
|
||||
for (const auto& path : new_paths)
|
||||
{
|
||||
auto file = std::make_shared<GameListItem>(path, m_title_database);
|
||||
auto file = std::make_shared<GameListItem>(path);
|
||||
if (file->IsValid())
|
||||
{
|
||||
cache_changed = true;
|
||||
@ -804,7 +804,8 @@ void GameListCtrl::RescanList()
|
||||
{
|
||||
bool emu_state_changed = file->EmuStateChanged();
|
||||
bool banner_changed = file->BannerChanged();
|
||||
if (emu_state_changed || banner_changed)
|
||||
bool custom_title_changed = file->CustomNameChanged(m_title_database);
|
||||
if (emu_state_changed || banner_changed || custom_title_changed)
|
||||
{
|
||||
cache_changed = refresh_needed = true;
|
||||
auto copy = std::make_shared<GameListItem>(*file);
|
||||
@ -812,6 +813,8 @@ void GameListCtrl::RescanList()
|
||||
copy->EmuStateCommit();
|
||||
if (banner_changed)
|
||||
copy->BannerCommit();
|
||||
if (custom_title_changed)
|
||||
copy->CustomNameCommit();
|
||||
file = std::move(copy);
|
||||
}
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ static std::string GetLanguageString(DiscIO::Language language,
|
||||
return "";
|
||||
}
|
||||
|
||||
GameListItem::GameListItem(const std::string& filename, const Core::TitleDatabase& title_database)
|
||||
GameListItem::GameListItem(const std::string& filename)
|
||||
: m_file_name(filename), m_region(DiscIO::Region::UNKNOWN_REGION),
|
||||
m_country(DiscIO::Country::COUNTRY_UNKNOWN)
|
||||
{
|
||||
@ -100,14 +100,6 @@ GameListItem::GameListItem(const std::string& filename, const Core::TitleDatabas
|
||||
if (m_company.empty() && m_game_id.size() >= 6)
|
||||
m_company = DiscIO::GetCompanyFromID(m_game_id.substr(4, 2));
|
||||
|
||||
if (IsValid())
|
||||
{
|
||||
const auto type = m_platform == DiscIO::Platform::WII_WAD ?
|
||||
Core::TitleDatabase::TitleType::Channel :
|
||||
Core::TitleDatabase::TitleType::Other;
|
||||
m_custom_name = title_database.GetTitleName(m_game_id, type);
|
||||
}
|
||||
|
||||
if (!IsValid() && IsElfOrDol())
|
||||
{
|
||||
m_valid = true;
|
||||
@ -147,6 +139,20 @@ bool GameListItem::IsValid() const
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GameListItem::CustomNameChanged(const Core::TitleDatabase& title_database)
|
||||
{
|
||||
const auto type = m_platform == DiscIO::Platform::WII_WAD ?
|
||||
Core::TitleDatabase::TitleType::Channel :
|
||||
Core::TitleDatabase::TitleType::Other;
|
||||
m_pending.custom_name = title_database.GetTitleName(m_game_id, type);
|
||||
return m_custom_name != m_pending.custom_name;
|
||||
}
|
||||
|
||||
void GameListItem::CustomNameCommit()
|
||||
{
|
||||
m_custom_name = m_pending.custom_name;
|
||||
}
|
||||
|
||||
bool GameListItem::EmuStateChanged()
|
||||
{
|
||||
IniFile ini = SConfig::LoadGameIni(m_game_id, m_revision);
|
||||
|
@ -33,7 +33,7 @@ class GameListItem
|
||||
{
|
||||
public:
|
||||
GameListItem() = default;
|
||||
GameListItem(const std::string& file_name, const Core::TitleDatabase& title_database);
|
||||
explicit GameListItem(const std::string& file_name);
|
||||
~GameListItem() = default;
|
||||
|
||||
bool IsValid() const;
|
||||
@ -67,6 +67,8 @@ public:
|
||||
void BannerCommit();
|
||||
bool EmuStateChanged();
|
||||
void EmuStateCommit();
|
||||
bool CustomNameChanged(const Core::TitleDatabase& title_database);
|
||||
void CustomNameCommit();
|
||||
|
||||
private:
|
||||
struct EmuState
|
||||
@ -132,5 +134,6 @@ private:
|
||||
{
|
||||
EmuState emu_state;
|
||||
Banner banner;
|
||||
std::string custom_name;
|
||||
} m_pending{};
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user