[common] Properly skip Custom Web Applet if YUZU_USE_QT_WEB_ENGINE is not defined (#2717)
This restores the Offline Web Applet LLE setting as default and properly skip Custom Web Applet if YUZU_USE_QT_WEB_ENGINE is not defined preventing crashes. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2717 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: Maufeat <sahyno1996@gmail.com> Co-authored-by: MaranBr <maranbr@outlook.com> Co-committed-by: MaranBr <maranbr@outlook.com>
This commit is contained in:
parent
91493fa39b
commit
1e1b8ad33f
2 changed files with 49 additions and 37 deletions
|
|
@ -161,7 +161,7 @@ struct Values {
|
||||||
Category::LibraryApplet};
|
Category::LibraryApplet};
|
||||||
Setting<AppletMode> photo_viewer_applet_mode{
|
Setting<AppletMode> photo_viewer_applet_mode{
|
||||||
linkage, AppletMode::LLE, "photo_viewer_applet_mode", Category::LibraryApplet};
|
linkage, AppletMode::LLE, "photo_viewer_applet_mode", Category::LibraryApplet};
|
||||||
Setting<AppletMode> offline_web_applet_mode{linkage, AppletMode::HLE, "offline_web_applet_mode",
|
Setting<AppletMode> offline_web_applet_mode{linkage, AppletMode::LLE, "offline_web_applet_mode",
|
||||||
Category::LibraryApplet};
|
Category::LibraryApplet};
|
||||||
Setting<AppletMode> login_share_applet_mode{linkage, AppletMode::HLE, "login_share_applet_mode",
|
Setting<AppletMode> login_share_applet_mode{linkage, AppletMode::HLE, "login_share_applet_mode",
|
||||||
Category::LibraryApplet};
|
Category::LibraryApplet};
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
|
@ -68,42 +71,6 @@ std::string ResolveURL(const std::string& url) {
|
||||||
return url.substr(0, index) + "lp1" + url.substr(index + 1);
|
return url.substr(0, index) + "lp1" + url.substr(index + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
WebArgInputTLVMap ReadWebArgs(const std::vector<u8>& web_arg, WebArgHeader& web_arg_header) {
|
|
||||||
std::memcpy(&web_arg_header, web_arg.data(), sizeof(WebArgHeader));
|
|
||||||
|
|
||||||
if (web_arg.size() == sizeof(WebArgHeader)) {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
WebArgInputTLVMap input_tlv_map;
|
|
||||||
|
|
||||||
u64 current_offset = sizeof(WebArgHeader);
|
|
||||||
|
|
||||||
for (std::size_t i = 0; i < web_arg_header.total_tlv_entries; ++i) {
|
|
||||||
if (web_arg.size() < current_offset + sizeof(WebArgInputTLV)) {
|
|
||||||
return input_tlv_map;
|
|
||||||
}
|
|
||||||
|
|
||||||
WebArgInputTLV input_tlv;
|
|
||||||
std::memcpy(&input_tlv, web_arg.data() + current_offset, sizeof(WebArgInputTLV));
|
|
||||||
|
|
||||||
current_offset += sizeof(WebArgInputTLV);
|
|
||||||
|
|
||||||
if (web_arg.size() < current_offset + input_tlv.arg_data_size) {
|
|
||||||
return input_tlv_map;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<u8> data(input_tlv.arg_data_size);
|
|
||||||
std::memcpy(data.data(), web_arg.data() + current_offset, input_tlv.arg_data_size);
|
|
||||||
|
|
||||||
current_offset += input_tlv.arg_data_size;
|
|
||||||
|
|
||||||
input_tlv_map.insert_or_assign(input_tlv.input_tlv_type, std::move(data));
|
|
||||||
}
|
|
||||||
|
|
||||||
return input_tlv_map;
|
|
||||||
}
|
|
||||||
|
|
||||||
FileSys::VirtualFile GetOfflineRomFS(Core::System& system, u64 title_id,
|
FileSys::VirtualFile GetOfflineRomFS(Core::System& system, u64 title_id,
|
||||||
FileSys::ContentRecordType nca_type) {
|
FileSys::ContentRecordType nca_type) {
|
||||||
if (nca_type == FileSys::ContentRecordType::Data) {
|
if (nca_type == FileSys::ContentRecordType::Data) {
|
||||||
|
|
@ -144,6 +111,43 @@ FileSys::VirtualFile GetOfflineRomFS(Core::System& system, u64 title_id,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef YUZU_USE_QT_WEB_ENGINE
|
||||||
|
WebArgInputTLVMap ReadWebArgs(const std::vector<u8>& web_arg, WebArgHeader& web_arg_header) {
|
||||||
|
std::memcpy(&web_arg_header, web_arg.data(), sizeof(WebArgHeader));
|
||||||
|
|
||||||
|
if (web_arg.size() == sizeof(WebArgHeader)) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
WebArgInputTLVMap input_tlv_map;
|
||||||
|
|
||||||
|
u64 current_offset = sizeof(WebArgHeader);
|
||||||
|
|
||||||
|
for (std::size_t i = 0; i < web_arg_header.total_tlv_entries; ++i) {
|
||||||
|
if (web_arg.size() < current_offset + sizeof(WebArgInputTLV)) {
|
||||||
|
return input_tlv_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
WebArgInputTLV input_tlv;
|
||||||
|
std::memcpy(&input_tlv, web_arg.data() + current_offset, sizeof(WebArgInputTLV));
|
||||||
|
|
||||||
|
current_offset += sizeof(WebArgInputTLV);
|
||||||
|
|
||||||
|
if (web_arg.size() < current_offset + input_tlv.arg_data_size) {
|
||||||
|
return input_tlv_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<u8> data(input_tlv.arg_data_size);
|
||||||
|
std::memcpy(data.data(), web_arg.data() + current_offset, input_tlv.arg_data_size);
|
||||||
|
|
||||||
|
current_offset += input_tlv.arg_data_size;
|
||||||
|
|
||||||
|
input_tlv_map.insert_or_assign(input_tlv.input_tlv_type, std::move(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
return input_tlv_map;
|
||||||
|
}
|
||||||
|
|
||||||
void ExtractSharedFonts(Core::System& system) {
|
void ExtractSharedFonts(Core::System& system) {
|
||||||
static constexpr std::array<const char*, 7> DECRYPTED_SHARED_FONTS{
|
static constexpr std::array<const char*, 7> DECRYPTED_SHARED_FONTS{
|
||||||
"FontStandard.ttf",
|
"FontStandard.ttf",
|
||||||
|
|
@ -221,6 +225,7 @@ void ExtractSharedFonts(Core::System& system) {
|
||||||
FileSys::VfsRawCopy(decrypted_font, out_file);
|
FileSys::VfsRawCopy(decrypted_font, out_file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
|
@ -232,6 +237,7 @@ WebBrowser::WebBrowser(Core::System& system_, std::shared_ptr<Applet> applet_,
|
||||||
WebBrowser::~WebBrowser() = default;
|
WebBrowser::~WebBrowser() = default;
|
||||||
|
|
||||||
void WebBrowser::Initialize() {
|
void WebBrowser::Initialize() {
|
||||||
|
#ifdef YUZU_USE_QT_WEB_ENGINE
|
||||||
FrontendApplet::Initialize();
|
FrontendApplet::Initialize();
|
||||||
|
|
||||||
LOG_INFO(Service_AM, "Initializing Web Browser Applet.");
|
LOG_INFO(Service_AM, "Initializing Web Browser Applet.");
|
||||||
|
|
@ -284,6 +290,7 @@ void WebBrowser::Initialize() {
|
||||||
ASSERT_MSG(false, "Invalid ShimKind={}", web_arg_header.shim_kind);
|
ASSERT_MSG(false, "Invalid ShimKind={}", web_arg_header.shim_kind);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Result WebBrowser::GetStatus() const {
|
Result WebBrowser::GetStatus() const {
|
||||||
|
|
@ -295,6 +302,7 @@ void WebBrowser::ExecuteInteractive() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebBrowser::Execute() {
|
void WebBrowser::Execute() {
|
||||||
|
#ifdef YUZU_USE_QT_WEB_ENGINE
|
||||||
switch (web_arg_header.shim_kind) {
|
switch (web_arg_header.shim_kind) {
|
||||||
case ShimKind::Shop:
|
case ShimKind::Shop:
|
||||||
ExecuteShop();
|
ExecuteShop();
|
||||||
|
|
@ -322,6 +330,10 @@ void WebBrowser::Execute() {
|
||||||
WebBrowserExit(WebExitReason::EndButtonPressed);
|
WebBrowserExit(WebExitReason::EndButtonPressed);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
LOG_INFO(Service_AM, "Web Browser Applet disabled, skipping.");
|
||||||
|
WebBrowserExit(WebExitReason::EndButtonPressed);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebBrowser::ExtractOfflineRomFS() {
|
void WebBrowser::ExtractOfflineRomFS() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue