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