android: fix garbled names in the game list

This commit is contained in:
BreadFish64 2020-05-04 21:45:04 -05:00 committed by bunnei
parent 843225af03
commit 1b1a6903b0
3 changed files with 9 additions and 22 deletions

View File

@ -51,32 +51,31 @@ std::vector<u8> GetSMDHData(std::string physical_name) {
return smdh;
}
char16_t* GetTitle(std::string physical_name) {
std::u16string GetTitle(std::string physical_name) {
Loader::SMDH::TitleLanguage language = Loader::SMDH::TitleLanguage::English;
std::vector<u8> smdh_data = GetSMDHData(physical_name);
if (!Loader::IsValidSMDH(smdh_data)) {
// SMDH is not valid, return null
return nullptr;
return {};
}
Loader::SMDH smdh;
memcpy(&smdh, smdh_data.data(), sizeof(Loader::SMDH));
// Get the title from SMDH in UTF-16 format
char16_t* title;
title = reinterpret_cast<char16_t*>(smdh.titles[static_cast<int>(language)].long_title.data());
std::u16string title{reinterpret_cast<char16_t*>(smdh.titles[static_cast<int>(language)].long_title.data())};
return title;
}
char16_t* GetPublisher(std::string physical_name) {
std::u16string GetPublisher(std::string physical_name) {
Loader::SMDH::TitleLanguage language = Loader::SMDH::TitleLanguage::English;
std::vector<u8> smdh_data = GetSMDHData(physical_name);
if (!Loader::IsValidSMDH(smdh_data)) {
// SMDH is not valid, return null
return nullptr;
return {};
}
Loader::SMDH smdh;

View File

@ -10,9 +10,9 @@
namespace GameInfo {
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);

View File

@ -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 j_filename) {
std::string filepath = GetJString(env, j_filename);
char16_t* Title = GameInfo::GetTitle(filepath);
if (!Title) {
return env->NewStringUTF("");
}
auto Title = GameInfo::GetTitle(filepath);
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,
jstring j_filename) {
std::string filepath = GetJString(env, j_filename);
char16_t* publisher = GameInfo::GetPublisher(filepath);
if (!publisher) {
return nullptr;
}
auto publisher = GameInfo::GetPublisher(filepath);
return env->NewStringUTF(Common::UTF16ToUTF8(publisher).data());
}