mirror of
https://github.com/stenzek/duckstation.git
synced 2024-11-23 05:49:43 +00:00
System: Fix audio CD images not showing title
Some checks are pending
Automated Builds / 💻 Windows (push) Waiting to run
Automated Builds / 🐧 Linux AppImage (push) Waiting to run
Automated Builds / 📦 Linux Flatpak (push) Waiting to run
Automated Builds / 🍎 MacOS (push) Waiting to run
Automated Builds / 📤 Create Release (push) Blocked by required conditions
Some checks are pending
Automated Builds / 💻 Windows (push) Waiting to run
Automated Builds / 🐧 Linux AppImage (push) Waiting to run
Automated Builds / 📦 Linux Flatpak (push) Waiting to run
Automated Builds / 🍎 MacOS (push) Waiting to run
Automated Builds / 📤 Create Release (push) Blocked by required conditions
This commit is contained in:
parent
f51c197020
commit
f6f913fe4f
@ -187,7 +187,7 @@ static void UpdateDisplayVSync();
|
|||||||
|
|
||||||
static bool UpdateGameSettingsLayer();
|
static bool UpdateGameSettingsLayer();
|
||||||
static void UpdateInputSettingsLayer(std::string input_profile_name, std::unique_lock<std::mutex>& lock);
|
static void UpdateInputSettingsLayer(std::string input_profile_name, std::unique_lock<std::mutex>& lock);
|
||||||
static void UpdateRunningGame(const std::string_view path, CDImage* image, bool booting);
|
static void UpdateRunningGame(const std::string& path, CDImage* image, bool booting);
|
||||||
static bool CheckForRequiredSubQ(Error* error);
|
static bool CheckForRequiredSubQ(Error* error);
|
||||||
|
|
||||||
static void UpdateControllers();
|
static void UpdateControllers();
|
||||||
@ -1780,7 +1780,7 @@ bool System::BootSystem(SystemBootParameters parameters, Error* error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update running game, this will apply settings as well.
|
// Update running game, this will apply settings as well.
|
||||||
UpdateRunningGame(disc ? disc->GetPath().c_str() : parameters.filename.c_str(), disc.get(), true);
|
UpdateRunningGame(disc ? disc->GetPath() : parameters.filename, disc.get(), true);
|
||||||
|
|
||||||
// Get boot EXE override.
|
// Get boot EXE override.
|
||||||
if (!parameters.override_exe.empty())
|
if (!parameters.override_exe.empty())
|
||||||
@ -3981,7 +3981,7 @@ void System::RemoveMedia()
|
|||||||
ClearMemorySaveStates();
|
ClearMemorySaveStates();
|
||||||
}
|
}
|
||||||
|
|
||||||
void System::UpdateRunningGame(const std::string_view path, CDImage* image, bool booting)
|
void System::UpdateRunningGame(const std::string& path, CDImage* image, bool booting)
|
||||||
{
|
{
|
||||||
if (!booting && s_state.running_game_path == path)
|
if (!booting && s_state.running_game_path == path)
|
||||||
return;
|
return;
|
||||||
@ -4032,35 +4032,46 @@ void System::UpdateRunningGame(const std::string_view path, CDImage* image, bool
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Check for an audio CD. Those shouldn't set any title.
|
else if (image)
|
||||||
else if (image && image->GetTrack(1).mode != CDImage::TrackMode::Audio)
|
|
||||||
{
|
{
|
||||||
std::string id;
|
// Data discs should try to pull the title from the serial.
|
||||||
GetGameDetailsFromImage(image, &id, &s_state.running_game_hash);
|
if (image->GetTrack(1).mode != CDImage::TrackMode::Audio)
|
||||||
|
|
||||||
s_state.running_game_entry = GameDatabase::GetEntryForGameDetails(id, s_state.running_game_hash);
|
|
||||||
if (s_state.running_game_entry)
|
|
||||||
{
|
{
|
||||||
s_state.running_game_serial = s_state.running_game_entry->serial;
|
std::string id;
|
||||||
if (s_state.running_game_title.empty())
|
GetGameDetailsFromImage(image, &id, &s_state.running_game_hash);
|
||||||
s_state.running_game_title = s_state.running_game_entry->title;
|
|
||||||
|
s_state.running_game_entry = GameDatabase::GetEntryForGameDetails(id, s_state.running_game_hash);
|
||||||
|
if (s_state.running_game_entry)
|
||||||
|
{
|
||||||
|
s_state.running_game_serial = s_state.running_game_entry->serial;
|
||||||
|
if (s_state.running_game_title.empty())
|
||||||
|
s_state.running_game_title = s_state.running_game_entry->title;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s_state.running_game_serial = std::move(id);
|
||||||
|
|
||||||
|
// Don't display device names for unknown physical discs.
|
||||||
|
if (s_state.running_game_title.empty() && !CDImage::IsDeviceName(path.c_str()))
|
||||||
|
s_state.running_game_title = Path::GetFileTitle(FileSystem::GetDisplayNameFromPath(path));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (image->HasSubImages())
|
||||||
|
{
|
||||||
|
std::string image_title = image->GetMetadata("title");
|
||||||
|
if (!image_title.empty())
|
||||||
|
{
|
||||||
|
s_state.running_game_title = std::move(image_title);
|
||||||
|
s_state.running_game_custom_title = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
s_state.running_game_serial = std::move(id);
|
// Audio CDs can get the path from the filename, assuming it's not a physical disc.
|
||||||
if (s_state.running_game_title.empty())
|
if (!CDImage::IsDeviceName(path.c_str()))
|
||||||
s_state.running_game_title = Path::GetFileTitle(FileSystem::GetDisplayNameFromPath(path));
|
s_state.running_game_title = Path::GetFileTitle(FileSystem::GetDisplayNameFromPath(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (image->HasSubImages())
|
|
||||||
{
|
|
||||||
std::string image_title = image->GetMetadata("title");
|
|
||||||
if (!image_title.empty())
|
|
||||||
{
|
|
||||||
s_state.running_game_title = std::move(image_title);
|
|
||||||
s_state.running_game_custom_title = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user