android: fix garbled names in the game list
This commit is contained in:
parent
843225af03
commit
1b1a6903b0
@ -51,32 +51,31 @@ std::vector<u8> GetSMDHData(std::string physical_name) {
|
|||||||
return smdh;
|
return smdh;
|
||||||
}
|
}
|
||||||
|
|
||||||
char16_t* GetTitle(std::string physical_name) {
|
std::u16string GetTitle(std::string physical_name) {
|
||||||
Loader::SMDH::TitleLanguage language = Loader::SMDH::TitleLanguage::English;
|
Loader::SMDH::TitleLanguage language = Loader::SMDH::TitleLanguage::English;
|
||||||
std::vector<u8> smdh_data = GetSMDHData(physical_name);
|
std::vector<u8> smdh_data = GetSMDHData(physical_name);
|
||||||
|
|
||||||
if (!Loader::IsValidSMDH(smdh_data)) {
|
if (!Loader::IsValidSMDH(smdh_data)) {
|
||||||
// SMDH is not valid, return null
|
// SMDH is not valid, return null
|
||||||
return nullptr;
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
Loader::SMDH smdh;
|
Loader::SMDH smdh;
|
||||||
memcpy(&smdh, smdh_data.data(), sizeof(Loader::SMDH));
|
memcpy(&smdh, smdh_data.data(), sizeof(Loader::SMDH));
|
||||||
|
|
||||||
// Get the title from SMDH in UTF-16 format
|
// Get the title from SMDH in UTF-16 format
|
||||||
char16_t* title;
|
std::u16string title{reinterpret_cast<char16_t*>(smdh.titles[static_cast<int>(language)].long_title.data())};
|
||||||
title = reinterpret_cast<char16_t*>(smdh.titles[static_cast<int>(language)].long_title.data());
|
|
||||||
|
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
char16_t* GetPublisher(std::string physical_name) {
|
std::u16string GetPublisher(std::string physical_name) {
|
||||||
Loader::SMDH::TitleLanguage language = Loader::SMDH::TitleLanguage::English;
|
Loader::SMDH::TitleLanguage language = Loader::SMDH::TitleLanguage::English;
|
||||||
std::vector<u8> smdh_data = GetSMDHData(physical_name);
|
std::vector<u8> smdh_data = GetSMDHData(physical_name);
|
||||||
|
|
||||||
if (!Loader::IsValidSMDH(smdh_data)) {
|
if (!Loader::IsValidSMDH(smdh_data)) {
|
||||||
// SMDH is not valid, return null
|
// SMDH is not valid, return null
|
||||||
return nullptr;
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
Loader::SMDH smdh;
|
Loader::SMDH smdh;
|
||||||
|
@ -10,9 +10,9 @@
|
|||||||
namespace GameInfo {
|
namespace GameInfo {
|
||||||
std::vector<u8> GetSMDHData(std::string physical_name);
|
std::vector<u8> GetSMDHData(std::string physical_name);
|
||||||
|
|
||||||
char16_t* GetTitle(std::string physical_name);
|
std::u16string GetTitle(std::string physical_name);
|
||||||
|
|
||||||
char16_t* GetPublisher(std::string physical_name);
|
std::u16string GetPublisher(std::string physical_name);
|
||||||
|
|
||||||
std::string GetRegions(std::string physical_name);
|
std::string GetRegions(std::string physical_name);
|
||||||
|
|
||||||
|
@ -345,13 +345,7 @@ jintArray Java_org_citra_citra_1emu_NativeLibrary_GetIcon(JNIEnv* env,
|
|||||||
jstring Java_org_citra_citra_1emu_NativeLibrary_GetTitle(JNIEnv* env, [[maybe_unused]] jclass clazz,
|
jstring Java_org_citra_citra_1emu_NativeLibrary_GetTitle(JNIEnv* env, [[maybe_unused]] jclass clazz,
|
||||||
jstring j_filename) {
|
jstring j_filename) {
|
||||||
std::string filepath = GetJString(env, j_filename);
|
std::string filepath = GetJString(env, j_filename);
|
||||||
|
auto Title = GameInfo::GetTitle(filepath);
|
||||||
char16_t* Title = GameInfo::GetTitle(filepath);
|
|
||||||
|
|
||||||
if (!Title) {
|
|
||||||
return env->NewStringUTF("");
|
|
||||||
}
|
|
||||||
|
|
||||||
return env->NewStringUTF(Common::UTF16ToUTF8(Title).data());
|
return env->NewStringUTF(Common::UTF16ToUTF8(Title).data());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,13 +375,7 @@ jstring Java_org_citra_citra_1emu_NativeLibrary_GetCompany(JNIEnv* env,
|
|||||||
[[maybe_unused]] jclass clazz,
|
[[maybe_unused]] jclass clazz,
|
||||||
jstring j_filename) {
|
jstring j_filename) {
|
||||||
std::string filepath = GetJString(env, j_filename);
|
std::string filepath = GetJString(env, j_filename);
|
||||||
|
auto publisher = GameInfo::GetPublisher(filepath);
|
||||||
char16_t* publisher = GameInfo::GetPublisher(filepath);
|
|
||||||
|
|
||||||
if (!publisher) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return env->NewStringUTF(Common::UTF16ToUTF8(publisher).data());
|
return env->NewStringUTF(Common::UTF16ToUTF8(publisher).data());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user