summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/am/library_applet_creator.cpp
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2024-01-07 03:21:01 +0100
committerLiam <byteslice@airmail.cc>2024-01-30 02:17:33 +0100
commit68303ed6016da0926df8b62e5a0c55c9b914f927 (patch)
tree35c805cffc86c668ae88641bd42358105ed6751a /src/core/hle/service/am/library_applet_creator.cpp
parentam: return AppletDataBroker and use for frontend applets (diff)
downloadyuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar.gz
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar.bz2
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar.lz
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar.xz
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.tar.zst
yuzu-68303ed6016da0926df8b62e5a0c55c9b914f927.zip
Diffstat (limited to 'src/core/hle/service/am/library_applet_creator.cpp')
-rw-r--r--src/core/hle/service/am/library_applet_creator.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/core/hle/service/am/library_applet_creator.cpp b/src/core/hle/service/am/library_applet_creator.cpp
index e69764670..47bab7528 100644
--- a/src/core/hle/service/am/library_applet_creator.cpp
+++ b/src/core/hle/service/am/library_applet_creator.cpp
@@ -84,10 +84,29 @@ AppletProgramId AppletIdToProgramId(AppletId applet_id) {
applet->type = AppletType::LibraryApplet;
applet->library_applet_mode = mode;
- // Library applet should be foreground
- applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::ChangeIntoForeground);
- applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::FocusStateChanged);
- applet->focus_state = FocusState::InFocus;
+ // Set focus state
+ switch (mode) {
+ case LibraryAppletMode::AllForeground:
+ case LibraryAppletMode::NoUI:
+ applet->focus_state = FocusState::InFocus;
+ applet->hid_registration.EnableAppletToGetInput(true);
+ applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::ChangeIntoForeground);
+ applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::FocusStateChanged);
+ break;
+ case LibraryAppletMode::AllForegroundInitiallyHidden:
+ applet->system_buffer_manager.SetWindowVisibility(false);
+ applet->focus_state = FocusState::NotInFocus;
+ applet->hid_registration.EnableAppletToGetInput(false);
+ applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::FocusStateChanged);
+ break;
+ case LibraryAppletMode::Background:
+ case LibraryAppletMode::BackgroundIndirectDisplay:
+ default:
+ applet->focus_state = FocusState::Background;
+ applet->hid_registration.EnableAppletToGetInput(true);
+ applet->message_queue.PushMessage(AppletMessageQueue::AppletMessage::FocusStateChanged);
+ break;
+ }
auto broker = std::make_shared<AppletDataBroker>(system);
applet->caller_applet = caller_applet;