|
|
|
@ -17,6 +17,8 @@ |
|
|
|
#include "core/hle/kernel/k_writable_event.h"
|
|
|
|
#include "core/hle/kernel/server_session.h"
|
|
|
|
#include "core/hle/service/am/am.h"
|
|
|
|
#include "core/hle/service/am/applet_ae.h"
|
|
|
|
#include "core/hle/service/am/applet_oe.h"
|
|
|
|
#include "core/hle/service/am/applets/applets.h"
|
|
|
|
#include "core/hle/service/am/applets/controller.h"
|
|
|
|
#include "core/hle/service/am/applets/error.h"
|
|
|
|
@ -24,17 +26,20 @@ |
|
|
|
#include "core/hle/service/am/applets/profile_select.h"
|
|
|
|
#include "core/hle/service/am/applets/software_keyboard.h"
|
|
|
|
#include "core/hle/service/am/applets/web_browser.h"
|
|
|
|
#include "core/hle/service/sm/sm.h"
|
|
|
|
|
|
|
|
namespace Service::AM::Applets { |
|
|
|
|
|
|
|
AppletDataBroker::AppletDataBroker(Kernel::KernelCore& kernel) { |
|
|
|
AppletDataBroker::AppletDataBroker(Core::System& system_, LibraryAppletMode applet_mode_) |
|
|
|
: system{system_}, applet_mode{applet_mode_} { |
|
|
|
state_changed_event = |
|
|
|
Kernel::KEvent::Create(kernel, "ILibraryAppletAccessor:StateChangedEvent"); |
|
|
|
Kernel::KEvent::Create(system.Kernel(), "ILibraryAppletAccessor:StateChangedEvent"); |
|
|
|
state_changed_event->Initialize(); |
|
|
|
pop_out_data_event = Kernel::KEvent::Create(kernel, "ILibraryAppletAccessor:PopDataOutEvent"); |
|
|
|
pop_out_data_event = |
|
|
|
Kernel::KEvent::Create(system.Kernel(), "ILibraryAppletAccessor:PopDataOutEvent"); |
|
|
|
pop_out_data_event->Initialize(); |
|
|
|
pop_interactive_out_data_event = |
|
|
|
Kernel::KEvent::Create(kernel, "ILibraryAppletAccessor:PopInteractiveDataOutEvent"); |
|
|
|
pop_interactive_out_data_event = Kernel::KEvent::Create( |
|
|
|
system.Kernel(), "ILibraryAppletAccessor:PopInteractiveDataOutEvent"); |
|
|
|
pop_interactive_out_data_event->Initialize(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -114,6 +119,27 @@ void AppletDataBroker::PushInteractiveDataFromApplet(std::shared_ptr<IStorage>&& |
|
|
|
|
|
|
|
void AppletDataBroker::SignalStateChanged() const { |
|
|
|
state_changed_event->GetWritableEvent()->Signal(); |
|
|
|
|
|
|
|
switch (applet_mode) { |
|
|
|
case LibraryAppletMode::AllForeground: |
|
|
|
case LibraryAppletMode::AllForegroundInitiallyHidden: { |
|
|
|
auto applet_oe = system.ServiceManager().GetService<AppletOE>("appletOE"); |
|
|
|
auto applet_ae = system.ServiceManager().GetService<AppletAE>("appletAE"); |
|
|
|
|
|
|
|
if (applet_oe) { |
|
|
|
applet_oe->GetMessageQueue()->FocusStateChanged(); |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
if (applet_ae) { |
|
|
|
applet_ae->GetMessageQueue()->FocusStateChanged(); |
|
|
|
break; |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
std::shared_ptr<Kernel::KReadableEvent> AppletDataBroker::GetNormalDataEvent() const { |
|
|
|
@ -128,8 +154,8 @@ std::shared_ptr<Kernel::KReadableEvent> AppletDataBroker::GetStateChangedEvent() |
|
|
|
return state_changed_event->GetReadableEvent(); |
|
|
|
} |
|
|
|
|
|
|
|
Applet::Applet(Kernel::KernelCore& kernel_, LibraryAppletMode applet_mode_) |
|
|
|
: broker{kernel_}, applet_mode{applet_mode_} {} |
|
|
|
Applet::Applet(Core::System& system_, LibraryAppletMode applet_mode_) |
|
|
|
: broker{system_, applet_mode_}, applet_mode{applet_mode_} {} |
|
|
|
|
|
|
|
Applet::~Applet() = default; |
|
|
|
|
|
|
|
|