|
@@ -12,8 +12,10 @@ namespace Service::AM {
|
|
|
|
|
|
|
|
class ILibraryAppletProxy final : public ServiceFramework<ILibraryAppletProxy> {
|
|
class ILibraryAppletProxy final : public ServiceFramework<ILibraryAppletProxy> {
|
|
|
public:
|
|
public:
|
|
|
- explicit ILibraryAppletProxy(std::shared_ptr<NVFlinger::NVFlinger> nvflinger)
|
|
|
|
|
- : ServiceFramework("ILibraryAppletProxy"), nvflinger(std::move(nvflinger)) {
|
|
|
|
|
|
|
+ explicit ILibraryAppletProxy(std::shared_ptr<NVFlinger::NVFlinger> nvflinger,
|
|
|
|
|
+ std::shared_ptr<AppletMessageQueue> msg_queue)
|
|
|
|
|
+ : ServiceFramework("ILibraryAppletProxy"), nvflinger(std::move(nvflinger)),
|
|
|
|
|
+ msg_queue(std::move(msg_queue)) {
|
|
|
static const FunctionInfo functions[] = {
|
|
static const FunctionInfo functions[] = {
|
|
|
{0, &ILibraryAppletProxy::GetCommonStateGetter, "GetCommonStateGetter"},
|
|
{0, &ILibraryAppletProxy::GetCommonStateGetter, "GetCommonStateGetter"},
|
|
|
{1, &ILibraryAppletProxy::GetSelfController, "GetSelfController"},
|
|
{1, &ILibraryAppletProxy::GetSelfController, "GetSelfController"},
|
|
@@ -32,7 +34,7 @@ private:
|
|
|
void GetCommonStateGetter(Kernel::HLERequestContext& ctx) {
|
|
void GetCommonStateGetter(Kernel::HLERequestContext& ctx) {
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
- rb.PushIpcInterface<ICommonStateGetter>();
|
|
|
|
|
|
|
+ rb.PushIpcInterface<ICommonStateGetter>(msg_queue);
|
|
|
LOG_DEBUG(Service_AM, "called");
|
|
LOG_DEBUG(Service_AM, "called");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -93,12 +95,15 @@ private:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
std::shared_ptr<NVFlinger::NVFlinger> nvflinger;
|
|
std::shared_ptr<NVFlinger::NVFlinger> nvflinger;
|
|
|
|
|
+ std::shared_ptr<AppletMessageQueue> msg_queue;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
class ISystemAppletProxy final : public ServiceFramework<ISystemAppletProxy> {
|
|
class ISystemAppletProxy final : public ServiceFramework<ISystemAppletProxy> {
|
|
|
public:
|
|
public:
|
|
|
- explicit ISystemAppletProxy(std::shared_ptr<NVFlinger::NVFlinger> nvflinger)
|
|
|
|
|
- : ServiceFramework("ISystemAppletProxy"), nvflinger(std::move(nvflinger)) {
|
|
|
|
|
|
|
+ explicit ISystemAppletProxy(std::shared_ptr<NVFlinger::NVFlinger> nvflinger,
|
|
|
|
|
+ std::shared_ptr<AppletMessageQueue> msg_queue)
|
|
|
|
|
+ : ServiceFramework("ISystemAppletProxy"), nvflinger(std::move(nvflinger)),
|
|
|
|
|
+ msg_queue(std::move(msg_queue)) {
|
|
|
static const FunctionInfo functions[] = {
|
|
static const FunctionInfo functions[] = {
|
|
|
{0, &ISystemAppletProxy::GetCommonStateGetter, "GetCommonStateGetter"},
|
|
{0, &ISystemAppletProxy::GetCommonStateGetter, "GetCommonStateGetter"},
|
|
|
{1, &ISystemAppletProxy::GetSelfController, "GetSelfController"},
|
|
{1, &ISystemAppletProxy::GetSelfController, "GetSelfController"},
|
|
@@ -119,7 +124,7 @@ private:
|
|
|
void GetCommonStateGetter(Kernel::HLERequestContext& ctx) {
|
|
void GetCommonStateGetter(Kernel::HLERequestContext& ctx) {
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
- rb.PushIpcInterface<ICommonStateGetter>();
|
|
|
|
|
|
|
+ rb.PushIpcInterface<ICommonStateGetter>(msg_queue);
|
|
|
LOG_DEBUG(Service_AM, "called");
|
|
LOG_DEBUG(Service_AM, "called");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -186,31 +191,34 @@ private:
|
|
|
LOG_DEBUG(Service_AM, "called");
|
|
LOG_DEBUG(Service_AM, "called");
|
|
|
}
|
|
}
|
|
|
std::shared_ptr<NVFlinger::NVFlinger> nvflinger;
|
|
std::shared_ptr<NVFlinger::NVFlinger> nvflinger;
|
|
|
|
|
+ std::shared_ptr<AppletMessageQueue> msg_queue;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
void AppletAE::OpenSystemAppletProxy(Kernel::HLERequestContext& ctx) {
|
|
void AppletAE::OpenSystemAppletProxy(Kernel::HLERequestContext& ctx) {
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
- rb.PushIpcInterface<ISystemAppletProxy>(nvflinger);
|
|
|
|
|
|
|
+ rb.PushIpcInterface<ISystemAppletProxy>(nvflinger, msg_queue);
|
|
|
LOG_DEBUG(Service_AM, "called");
|
|
LOG_DEBUG(Service_AM, "called");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void AppletAE::OpenLibraryAppletProxy(Kernel::HLERequestContext& ctx) {
|
|
void AppletAE::OpenLibraryAppletProxy(Kernel::HLERequestContext& ctx) {
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
- rb.PushIpcInterface<ILibraryAppletProxy>(nvflinger);
|
|
|
|
|
|
|
+ rb.PushIpcInterface<ILibraryAppletProxy>(nvflinger, msg_queue);
|
|
|
LOG_DEBUG(Service_AM, "called");
|
|
LOG_DEBUG(Service_AM, "called");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void AppletAE::OpenLibraryAppletProxyOld(Kernel::HLERequestContext& ctx) {
|
|
void AppletAE::OpenLibraryAppletProxyOld(Kernel::HLERequestContext& ctx) {
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
- rb.PushIpcInterface<ILibraryAppletProxy>(nvflinger);
|
|
|
|
|
|
|
+ rb.PushIpcInterface<ILibraryAppletProxy>(nvflinger, msg_queue);
|
|
|
LOG_DEBUG(Service_AM, "called");
|
|
LOG_DEBUG(Service_AM, "called");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-AppletAE::AppletAE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger)
|
|
|
|
|
- : ServiceFramework("appletAE"), nvflinger(std::move(nvflinger)) {
|
|
|
|
|
|
|
+AppletAE::AppletAE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger,
|
|
|
|
|
+ std::shared_ptr<AppletMessageQueue> msg_queue)
|
|
|
|
|
+ : ServiceFramework("appletAE"), nvflinger(std::move(nvflinger)),
|
|
|
|
|
+ msg_queue(std::move(msg_queue)) {
|
|
|
// clang-format off
|
|
// clang-format off
|
|
|
static const FunctionInfo functions[] = {
|
|
static const FunctionInfo functions[] = {
|
|
|
{100, &AppletAE::OpenSystemAppletProxy, "OpenSystemAppletProxy"},
|
|
{100, &AppletAE::OpenSystemAppletProxy, "OpenSystemAppletProxy"},
|
|
@@ -228,4 +236,8 @@ AppletAE::AppletAE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger)
|
|
|
|
|
|
|
|
AppletAE::~AppletAE() = default;
|
|
AppletAE::~AppletAE() = default;
|
|
|
|
|
|
|
|
|
|
+const std::shared_ptr<AppletMessageQueue>& AppletAE::GetMessageQueue() const {
|
|
|
|
|
+ return msg_queue;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
} // namespace Service::AM
|
|
} // namespace Service::AM
|