mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
Simplify appletGetAppletResourceUserId and related logic
This commit is contained in:
parent
9c4ab7f09d
commit
7e6ff7e486
@ -368,7 +368,7 @@ Service* appletGetServiceSession_DisplayController(void);
|
||||
Service* appletGetServiceSession_DebugFunctions(void);
|
||||
|
||||
/// Get the cached AppletResourceUserId.
|
||||
Result appletGetAppletResourceUserId(u64 *out);
|
||||
u64 appletGetAppletResourceUserId(void);
|
||||
|
||||
/// Get the \ref AppletType.
|
||||
AppletType appletGetAppletType(void);
|
||||
|
@ -1169,12 +1169,8 @@ Result appletSetApplicationAlbumUserData(const void* buffer, size_t size) {
|
||||
|
||||
IPC_MAKE_CMD_IMPL(static Result _appletGetAppletResourceUserId(u64 *out), &g_appletIWindowController, 1, _appletCmdNoInOutU64, out)
|
||||
|
||||
Result appletGetAppletResourceUserId(u64 *out) {
|
||||
if (!serviceIsActive(&g_appletSrv))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
|
||||
|
||||
*out = g_appletResourceUserId;
|
||||
return 0;
|
||||
u64 appletGetAppletResourceUserId(void) {
|
||||
return g_appletResourceUserId;
|
||||
}
|
||||
|
||||
IPC_MAKE_CMD_IMPL_HOSVER(Result appletGetAppletResourceUserIdOfCallerApplet(u64 *out), &g_appletIWindowController, 2, _appletCmdNoInOutU64, (6,0,0), out)
|
||||
@ -1432,11 +1428,7 @@ static Result _appletCreateLibraryApplet(Service* srv_out, AppletId id, LibApple
|
||||
}
|
||||
|
||||
static Result _appletGetIndirectLayerConsumerHandle(Service* srv, u64 *out) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc)) return rc;
|
||||
u64 AppletResourceUserId = appletGetAppletResourceUserId();
|
||||
|
||||
serviceAssumeDomain(srv);
|
||||
return serviceDispatchInOut(srv, 160, AppletResourceUserId, *out,
|
||||
|
@ -13,14 +13,10 @@ static Result _auddevGetAudioDeviceService(Service* srv, Service* srv_out, u64 a
|
||||
NX_GENERATE_SERVICE_GUARD(auddev);
|
||||
|
||||
Result _auddevInitialize(void) {
|
||||
Result rc=0;
|
||||
u64 aruid = 0;
|
||||
rc = appletGetAppletResourceUserId(&aruid);
|
||||
|
||||
Service audrenMgrSrv;
|
||||
rc = smGetService(&audrenMgrSrv, "audren:u");
|
||||
Result rc = smGetService(&audrenMgrSrv, "audren:u");
|
||||
if (R_SUCCEEDED(rc)) {
|
||||
rc = _auddevGetAudioDeviceService(&audrenMgrSrv, &g_auddevIAudioDevice, aruid);
|
||||
rc = _auddevGetAudioDeviceService(&audrenMgrSrv, &g_auddevIAudioDevice, appletGetAppletResourceUserId());
|
||||
|
||||
serviceClose(&audrenMgrSrv);
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ typedef struct {
|
||||
u32 revision;
|
||||
} AudioRendererParameter;
|
||||
|
||||
static Result _audrenOpenAudioRenderer(Service* srv, Service* srv_out, const AudioRendererParameter* param, u64 aruid);
|
||||
static Result _audrenOpenAudioRenderer(Service* srv, Service* srv_out, const AudioRendererParameter* param);
|
||||
static Result _audrenGetWorkBufferSize(Service* srv, const AudioRendererParameter* param, u64* out_size);
|
||||
static Result _audrenQuerySystemEvent(Event* out_event);
|
||||
|
||||
@ -76,11 +76,6 @@ Result _audrenInitialize(const AudioRendererConfig* config) {
|
||||
param.effect_count = config->num_effects;
|
||||
param.revision = g_audrenRevision;
|
||||
|
||||
// Get aruid
|
||||
u64 aruid = 0;
|
||||
rc = appletGetAppletResourceUserId(&aruid);
|
||||
//if (R_FAILED(rc)) return rc; // apparently audren still inits fine with aruid = 0 so this isn't a fatal error condition
|
||||
|
||||
// Open IAudioRendererManager
|
||||
Service audrenMgrSrv;
|
||||
rc = smGetService(&audrenMgrSrv, "audren:u");
|
||||
@ -94,7 +89,7 @@ Result _audrenInitialize(const AudioRendererConfig* config) {
|
||||
rc = tmemCreate(&g_audrenWorkBuf, workBufSize, Perm_None);
|
||||
if (R_SUCCEEDED(rc)) {
|
||||
// Create the IAudioRenderer service
|
||||
rc = _audrenOpenAudioRenderer(&audrenMgrSrv, &g_audrenIAudioRenderer, ¶m, aruid);
|
||||
rc = _audrenOpenAudioRenderer(&audrenMgrSrv, &g_audrenIAudioRenderer, ¶m);
|
||||
if (R_SUCCEEDED(rc)) {
|
||||
// Finally, get the handle to the system event
|
||||
rc = _audrenQuerySystemEvent(&g_audrenEvent);
|
||||
@ -144,13 +139,13 @@ void audrenWaitFrame(void) {
|
||||
eventWait(&g_audrenEvent, U64_MAX);
|
||||
}
|
||||
|
||||
Result _audrenOpenAudioRenderer(Service* srv, Service* srv_out, const AudioRendererParameter* param, u64 aruid) {
|
||||
Result _audrenOpenAudioRenderer(Service* srv, Service* srv_out, const AudioRendererParameter* param) {
|
||||
const struct {
|
||||
AudioRendererParameter param;
|
||||
u32 pad;
|
||||
u64 work_buffer_size;
|
||||
u64 aruid;
|
||||
} in = { *param, 0, g_audrenWorkBuf.size, aruid };
|
||||
} in = { *param, 0, g_audrenWorkBuf.size, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(srv, 0, in,
|
||||
.in_send_pid = true,
|
||||
|
@ -36,13 +36,10 @@ static Result _capssuSetShimLibraryVersion(u64 version) {
|
||||
if (hosversionBefore(7,0,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
u64 version;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { version, AppletResourceUserId };
|
||||
} in = { version, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_capssuSrv, 32, in,
|
||||
.in_send_pid = true,
|
||||
@ -50,15 +47,12 @@ static Result _capssuSetShimLibraryVersion(u64 version) {
|
||||
}
|
||||
|
||||
static Result _capssuSaveScreenShotEx0(const void* buffer, size_t size, const CapsScreenShotAttribute *attr, AlbumReportOption reportoption, CapsApplicationAlbumEntry *out) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
CapsScreenShotAttribute attr;
|
||||
u32 reportoption;
|
||||
u32 pad;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { *attr, reportoption, 0, AppletResourceUserId };
|
||||
} in = { *attr, reportoption, 0, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchInOut(&g_capssuSrv, 203, in, *out,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapTransferAllowsNonSecure | SfBufferAttr_HipcMapAlias | SfBufferAttr_In },
|
||||
@ -68,15 +62,12 @@ static Result _capssuSaveScreenShotEx0(const void* buffer, size_t size, const Ca
|
||||
}
|
||||
|
||||
static Result _capssuSaveScreenShotEx(u32 cmd_id, bool pid, const void* argbuf, size_t argbuf_size, const void* buffer, size_t size, const CapsScreenShotAttribute *attr, AlbumReportOption reportoption, CapsApplicationAlbumEntry *out) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
CapsScreenShotAttribute attr;
|
||||
u32 reportoption;
|
||||
u32 pad;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { *attr, reportoption, 0, AppletResourceUserId };
|
||||
} in = { *attr, reportoption, 0, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchInOut(&g_capssuSrv, cmd_id, in, *out,
|
||||
.buffer_attrs = {
|
||||
|
@ -47,13 +47,10 @@ static Result _capsuSetShimLibraryVersion(u64 version) {
|
||||
if (hosversionBefore(7,0,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
u64 version;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { version, AppletResourceUserId };
|
||||
} in = { version, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_capsuSrv, 32, in,
|
||||
.in_send_pid = true,
|
||||
@ -61,16 +58,13 @@ static Result _capsuSetShimLibraryVersion(u64 version) {
|
||||
}
|
||||
|
||||
static Result _capsuGetAlbumFileList0AafeAruidDeprecated(void* entries, size_t entrysize, s32 count, u8 type, u64 start_timestamp, u64 end_timestamp, s32 *total_entries) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
u8 type;
|
||||
u8 pad[7];
|
||||
u64 start_timestamp;
|
||||
u64 end_timestamp;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { type, {0}, start_timestamp, end_timestamp, AppletResourceUserId };
|
||||
} in = { type, {0}, start_timestamp, end_timestamp, appletGetAppletResourceUserId() };
|
||||
|
||||
u64 total_out=0;
|
||||
Result rc = serviceDispatchInOut(&g_capsuSrv, 102, in, total_out,
|
||||
@ -83,15 +77,12 @@ static Result _capsuGetAlbumFileList0AafeAruidDeprecated(void* entries, size_t e
|
||||
}
|
||||
|
||||
static Result _capsuDeleteAlbumFileByAruid(u32 cmd_id, u8 type, const CapsApplicationAlbumFileEntry *entry) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
u8 type;
|
||||
u8 pad[7];
|
||||
CapsApplicationAlbumFileEntry entry;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { type, {0}, *entry, AppletResourceUserId };
|
||||
} in = { type, {0}, *entry, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_capsuSrv, 103, in,
|
||||
.in_send_pid = true,
|
||||
@ -99,13 +90,10 @@ static Result _capsuDeleteAlbumFileByAruid(u32 cmd_id, u8 type, const CapsApplic
|
||||
}
|
||||
|
||||
static Result _capsuGetAlbumFileSizeByAruid(const CapsApplicationAlbumFileEntry *entry, u64 *size) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
CapsApplicationAlbumFileEntry entry;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { *entry, AppletResourceUserId };
|
||||
} in = { *entry, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchInOut(&g_capsuSrv, 104, in, *size,
|
||||
.in_send_pid = true,
|
||||
@ -113,15 +101,12 @@ static Result _capsuGetAlbumFileSizeByAruid(const CapsApplicationAlbumFileEntry
|
||||
}
|
||||
|
||||
static Result _capsuPrecheckToCreateContentsByAruid(u8 type, u64 unk) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
u8 type;
|
||||
u8 pad[7];
|
||||
u64 unk;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { type, {0}, unk, AppletResourceUserId };
|
||||
} in = { type, {0}, unk, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_capsuSrv, 130, in,
|
||||
.in_send_pid = true,
|
||||
@ -129,14 +114,11 @@ static Result _capsuPrecheckToCreateContentsByAruid(u8 type, u64 unk) {
|
||||
}
|
||||
|
||||
static Result _capsuLoadAlbumScreenShotImageByAruid(u32 cmd_id, CapsLoadAlbumScreenShotImageOutputForApplication *out, void* image, size_t image_size, void* workbuf, size_t workbuf_size, const CapsApplicationAlbumFileEntry *entry, const CapsScreenShotDecodeOption *option) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
CapsApplicationAlbumFileEntry entry;
|
||||
CapsScreenShotDecodeOption option;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { *entry, *option, AppletResourceUserId };
|
||||
} in = { *entry, *option, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_capsuSrv, cmd_id, in,
|
||||
.buffer_attrs = {
|
||||
@ -154,9 +136,6 @@ static Result _capsuLoadAlbumScreenShotImageByAruid(u32 cmd_id, CapsLoadAlbumScr
|
||||
}
|
||||
|
||||
static Result _capsuGetAlbumFileListAaeAruid(u32 cmd_id, void* entries, size_t entrysize, s32 count, u8 type, const CapsAlbumFileDateTime *start_datetime, const CapsAlbumFileDateTime *end_datetime, s32 *total_entries) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
u8 type;
|
||||
u8 pad;
|
||||
@ -164,7 +143,7 @@ static Result _capsuGetAlbumFileListAaeAruid(u32 cmd_id, void* entries, size_t e
|
||||
CapsAlbumFileDateTime end_datetime;
|
||||
u8 pad2[6];
|
||||
u64 AppletResourceUserId;
|
||||
} in = { type, 0, *start_datetime, *end_datetime, {0}, AppletResourceUserId };
|
||||
} in = { type, 0, *start_datetime, *end_datetime, {0}, appletGetAppletResourceUserId() };
|
||||
|
||||
u64 total_out=0;
|
||||
Result rc = serviceDispatchInOut(&g_capsuSrv, cmd_id, in, total_out,
|
||||
@ -177,9 +156,6 @@ static Result _capsuGetAlbumFileListAaeAruid(u32 cmd_id, void* entries, size_t e
|
||||
}
|
||||
|
||||
static Result _capsuGetAlbumFileListAaeUidAruid(u32 cmd_id, void* entries, size_t entrysize, s32 count, u8 type, const CapsAlbumFileDateTime *start_datetime, const CapsAlbumFileDateTime *end_datetime, AccountUid uid, s32 *total_entries) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
u8 type;
|
||||
u8 pad;
|
||||
@ -188,7 +164,7 @@ static Result _capsuGetAlbumFileListAaeUidAruid(u32 cmd_id, void* entries, size_
|
||||
u8 pad2[6];
|
||||
AccountUid uid;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { type, 0, *start_datetime, *end_datetime, {0}, uid, AppletResourceUserId };
|
||||
} in = { type, 0, *start_datetime, *end_datetime, {0}, uid, appletGetAppletResourceUserId() };
|
||||
|
||||
u64 total_out=0;
|
||||
Result rc = serviceDispatchInOut(&g_capsuSrv, cmd_id, in, total_out,
|
||||
@ -201,13 +177,10 @@ static Result _capsuGetAlbumFileListAaeUidAruid(u32 cmd_id, void* entries, size_
|
||||
}
|
||||
|
||||
static Result _capsuOpenAccessorSessionForApplication(Service* srv_out, const CapsApplicationAlbumFileEntry *entry) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
CapsApplicationAlbumFileEntry entry;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { *entry, AppletResourceUserId };
|
||||
} in = { *entry, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_capsuSrv, 60002, in,
|
||||
.in_send_pid = true,
|
||||
@ -217,13 +190,10 @@ static Result _capsuOpenAccessorSessionForApplication(Service* srv_out, const Ca
|
||||
}
|
||||
|
||||
static Result _capsuOpenAlbumMovieReadStream(u64 *stream, const CapsApplicationAlbumFileEntry *entry) {
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
const struct {
|
||||
CapsApplicationAlbumFileEntry entry;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { *entry, AppletResourceUserId };
|
||||
} in = { *entry, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchInOut(&g_capsuAccessor, 2001, in, *stream,
|
||||
.in_send_pid = true,
|
||||
|
@ -40,7 +40,7 @@ static TransferMemory g_sevenSixAxisSensorTmem1;
|
||||
|
||||
static RwLock g_hidLock;
|
||||
|
||||
static Result _hidCreateAppletResource(Service* srv, Service* srv_out, u64 AppletResourceUserId);
|
||||
static Result _hidCreateAppletResource(Service* srv, Service* srv_out);
|
||||
static Result _hidGetSharedMemoryHandle(Service* srv, Handle* handle_out);
|
||||
|
||||
static Result _hidActivateNpad(void);
|
||||
@ -65,15 +65,11 @@ Result _hidInitialize(void) {
|
||||
Result rc=0;
|
||||
Handle sharedmem_handle;
|
||||
|
||||
// If this failed (for example because we're a sysmodule) AppletResourceUserId stays zero
|
||||
u64 AppletResourceUserId = 0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
rc = smGetService(&g_hidSrv, "hid");
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = _hidCreateAppletResource(&g_hidSrv, &g_hidIAppletResource, AppletResourceUserId);
|
||||
rc = _hidCreateAppletResource(&g_hidSrv, &g_hidIAppletResource);
|
||||
|
||||
if (R_SUCCEEDED(rc))
|
||||
rc = _hidGetSharedMemoryHandle(&g_hidIAppletResource, &sharedmem_handle);
|
||||
@ -649,12 +645,7 @@ static Result _hidCmdGetSession(Service* srv_out, u32 cmd_id) {
|
||||
}
|
||||
|
||||
static Result _hidCmdWithNoInput(u32 cmd_id) {
|
||||
Result rc=0;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
u64 AppletResourceUserId = appletGetAppletResourceUserId();
|
||||
|
||||
return serviceDispatchIn(&g_hidSrv, cmd_id, AppletResourceUserId,
|
||||
.in_send_pid = true,
|
||||
@ -674,17 +665,10 @@ static Result _hidCmdInU32NoOut(Service* srv, u32 inval, u32 cmd_id) {
|
||||
}
|
||||
|
||||
static Result _hidCmdWithInputU32(u32 inval, u32 cmd_id) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u32 inval;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { inval, AppletResourceUserId };
|
||||
} in = { inval, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_hidSrv, cmd_id, in,
|
||||
.in_send_pid = true,
|
||||
@ -692,17 +676,10 @@ static Result _hidCmdWithInputU32(u32 inval, u32 cmd_id) {
|
||||
}
|
||||
|
||||
static Result _hidCmdWithInputU64(u64 inval, u32 cmd_id) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u64 AppletResourceUserId;
|
||||
u64 inval;
|
||||
} in = { AppletResourceUserId, inval };
|
||||
} in = { appletGetAppletResourceUserId(), inval };
|
||||
|
||||
return serviceDispatchIn(&g_hidSrv, cmd_id, in,
|
||||
.in_send_pid = true,
|
||||
@ -710,12 +687,7 @@ static Result _hidCmdWithInputU64(u64 inval, u32 cmd_id) {
|
||||
}
|
||||
|
||||
static Result _hidCmdOutU32(u32 *out, u32 cmd_id) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
u64 AppletResourceUserId = appletGetAppletResourceUserId();
|
||||
|
||||
return serviceDispatchInOut(&g_hidSrv, cmd_id, AppletResourceUserId, *out,
|
||||
.in_send_pid = true,
|
||||
@ -723,12 +695,7 @@ static Result _hidCmdOutU32(u32 *out, u32 cmd_id) {
|
||||
}
|
||||
|
||||
static Result _hidCmdOutU64(u64 *out, u32 cmd_id) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
u64 AppletResourceUserId = appletGetAppletResourceUserId();
|
||||
|
||||
return serviceDispatchInOut(&g_hidSrv, cmd_id, AppletResourceUserId, *out,
|
||||
.in_send_pid = true,
|
||||
@ -746,7 +713,9 @@ static Result _hidCmdNoInOutBool(bool *out, u32 cmd_id) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
static Result _hidCreateAppletResource(Service* srv, Service* srv_out, u64 AppletResourceUserId) {
|
||||
static Result _hidCreateAppletResource(Service* srv, Service* srv_out) {
|
||||
u64 AppletResourceUserId = appletGetAppletResourceUserId();
|
||||
|
||||
return serviceDispatchIn(srv, 0, AppletResourceUserId,
|
||||
.in_send_pid = true,
|
||||
.out_num_objects = 1,
|
||||
@ -762,20 +731,13 @@ Result hidSetSixAxisSensorFusionParameters(u32 SixAxisSensorHandle, float unk0,
|
||||
if (unk0 < 0.0f || unk0 > 1.0f)
|
||||
return MAKERESULT(Module_Libnx, LibnxError_BadInput);
|
||||
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u32 SixAxisSensorHandle;
|
||||
float unk0;
|
||||
float unk1;
|
||||
u32 pad;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { SixAxisSensorHandle, unk0, unk1, 0, AppletResourceUserId };
|
||||
} in = { SixAxisSensorHandle, unk0, unk1, 0, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_hidSrv, 70, in,
|
||||
.in_send_pid = true,
|
||||
@ -784,17 +746,12 @@ Result hidSetSixAxisSensorFusionParameters(u32 SixAxisSensorHandle, float unk0,
|
||||
|
||||
Result hidGetSixAxisSensorFusionParameters(u32 SixAxisSensorHandle, float *unk0, float *unk1) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u32 SixAxisSensorHandle;
|
||||
u32 pad;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { SixAxisSensorHandle, 0, AppletResourceUserId };
|
||||
} in = { SixAxisSensorHandle, 0, appletGetAppletResourceUserId() };
|
||||
|
||||
struct {
|
||||
float unk0;
|
||||
@ -814,18 +771,11 @@ Result hidResetSixAxisSensorFusionParameters(u32 SixAxisSensorHandle) {
|
||||
}
|
||||
|
||||
Result hidSetGyroscopeZeroDriftMode(u32 SixAxisSensorHandle, HidGyroscopeZeroDriftMode mode) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u32 SixAxisSensorHandle;
|
||||
u32 mode;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { SixAxisSensorHandle, mode, AppletResourceUserId };
|
||||
} in = { SixAxisSensorHandle, mode, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_hidSrv, 79, in,
|
||||
.in_send_pid = true,
|
||||
@ -834,17 +784,12 @@ Result hidSetGyroscopeZeroDriftMode(u32 SixAxisSensorHandle, HidGyroscopeZeroDri
|
||||
|
||||
Result hidGetGyroscopeZeroDriftMode(u32 SixAxisSensorHandle, HidGyroscopeZeroDriftMode *mode) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u32 SixAxisSensorHandle;
|
||||
u32 pad;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { SixAxisSensorHandle, 0, AppletResourceUserId };
|
||||
} in = { SixAxisSensorHandle, 0, appletGetAppletResourceUserId() };
|
||||
|
||||
u32 tmp=0;
|
||||
rc = serviceDispatchInOut(&g_hidSrv, 80, in, tmp,
|
||||
@ -870,16 +815,11 @@ Result hidGetSupportedNpadStyleSet(HidControllerType *type) {
|
||||
}
|
||||
|
||||
Result hidSetSupportedNpadIdType(HidControllerID *buf, size_t count) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
u64 AppletResourceUserId = appletGetAppletResourceUserId();
|
||||
size_t i;
|
||||
u32 tmpval=0;
|
||||
u32 tmpbuf[10];
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
if (count > 10)
|
||||
return MAKERESULT(Module_Libnx, LibnxError_OutOfMemory);
|
||||
|
||||
@ -925,18 +865,13 @@ static Result _hidDeactivateNpad(void) {
|
||||
Result hidAcquireNpadStyleSetUpdateEventHandle(HidControllerID id, Event* out_event, bool autoclear) {
|
||||
Result rc;
|
||||
Handle tmp_handle = INVALID_HANDLE;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u32 id;
|
||||
u32 pad;
|
||||
u64 AppletResourceUserId;
|
||||
u64 event_ptr; // Official sw sets this to a ptr, which the sysmodule doesn't seem to use.
|
||||
} in = { hidControllerIDToOfficial(id), 0, AppletResourceUserId, 0 };
|
||||
} in = { hidControllerIDToOfficial(id), 0, appletGetAppletResourceUserId(), 0 };
|
||||
|
||||
rc = serviceDispatchIn(&g_hidSrv, 106, in,
|
||||
.in_send_pid = true,
|
||||
@ -967,17 +902,10 @@ Result hidSetNpadJoyAssignmentModeDual(HidControllerID id) {
|
||||
}
|
||||
|
||||
Result hidMergeSingleJoyAsDualJoy(HidControllerID id0, HidControllerID id1) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u32 id0, id1;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { hidControllerIDToOfficial(id0), hidControllerIDToOfficial(id1), AppletResourceUserId };
|
||||
} in = { hidControllerIDToOfficial(id0), hidControllerIDToOfficial(id1), appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_hidSrv, 125, in,
|
||||
.in_send_pid = true,
|
||||
@ -997,19 +925,12 @@ Result hidGetVibrationDeviceInfo(const u32 *VibrationDeviceHandle, HidVibrationD
|
||||
}
|
||||
|
||||
Result hidSendVibrationValue(const u32 *VibrationDeviceHandle, HidVibrationValue *VibrationValue) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u32 VibrationDeviceHandle;
|
||||
HidVibrationValue VibrationValue;
|
||||
u32 pad;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { *VibrationDeviceHandle, *VibrationValue, 0, AppletResourceUserId };
|
||||
} in = { *VibrationDeviceHandle, *VibrationValue, 0, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_hidSrv, 201, in,
|
||||
.in_send_pid = true,
|
||||
@ -1017,17 +938,10 @@ Result hidSendVibrationValue(const u32 *VibrationDeviceHandle, HidVibrationValue
|
||||
}
|
||||
|
||||
Result hidGetActualVibrationValue(const u32 *VibrationDeviceHandle, HidVibrationValue *VibrationValue) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u32 VibrationDeviceHandle;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { *VibrationDeviceHandle, AppletResourceUserId };
|
||||
} in = { *VibrationDeviceHandle, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchInOut(&g_hidSrv, 202, in, *VibrationValue,
|
||||
.in_send_pid = true,
|
||||
@ -1043,12 +957,7 @@ Result hidIsVibrationPermitted(bool *flag) {
|
||||
}
|
||||
|
||||
Result hidSendVibrationValues(const u32 *VibrationDeviceHandles, HidVibrationValue *VibrationValues, s32 count) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
u64 AppletResourceUserId = appletGetAppletResourceUserId();
|
||||
|
||||
return serviceDispatchIn(&g_hidSrv, 206, AppletResourceUserId,
|
||||
.buffer_attrs = {
|
||||
@ -1067,16 +976,11 @@ Result hidIsVibrationDeviceMounted(const u32 *VibrationDeviceHandle, bool *flag)
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u32 VibrationDeviceHandle;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { *VibrationDeviceHandle, AppletResourceUserId };
|
||||
} in = { *VibrationDeviceHandle, appletGetAppletResourceUserId() };
|
||||
|
||||
u8 tmp=0;
|
||||
rc = serviceDispatchInOut(&g_hidSrv, 211, in, tmp,
|
||||
@ -1224,18 +1128,11 @@ Result hidStopSevenSixAxisSensor(void) {
|
||||
}
|
||||
|
||||
static Result _hidInitializeSevenSixAxisSensor(TransferMemory *tmem0, TransferMemory *tmem1) {
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
u64 AppletResourceUserId;
|
||||
u64 size0;
|
||||
u64 size1;
|
||||
} in = { AppletResourceUserId, tmem0->size, tmem1->size };
|
||||
} in = { appletGetAppletResourceUserId(), tmem0->size, tmem1->size };
|
||||
|
||||
return serviceDispatchIn(&g_hidSrv, 306, in,
|
||||
.in_send_pid = true,
|
||||
@ -1300,17 +1197,10 @@ Result hidSetSevenSixAxisSensorFusionStrength(float strength) {
|
||||
if (hosversionBefore(5,0,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
|
||||
const struct {
|
||||
float strength;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { strength, AppletResourceUserId };
|
||||
} in = { strength, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_hidSrv, 308, in,
|
||||
.in_send_pid = true,
|
||||
@ -1321,12 +1211,7 @@ Result hidGetSevenSixAxisSensorFusionStrength(float *strength) {
|
||||
if (hosversionBefore(5,0,0))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||
|
||||
Result rc;
|
||||
u64 AppletResourceUserId;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
AppletResourceUserId = 0;
|
||||
u64 AppletResourceUserId = appletGetAppletResourceUserId();
|
||||
|
||||
return serviceDispatchInOut(&g_hidSrv, 309, AppletResourceUserId, *strength,
|
||||
.in_send_pid = true,
|
||||
|
@ -15,12 +15,9 @@ Result _hidsysInitialize(void) {
|
||||
Result rc = smGetService(&g_hidsysSrv, "hid:sys");
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&g_hidsysAppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
g_hidsysAppletResourceUserId = 0;
|
||||
|
||||
return 0;
|
||||
g_hidsysAppletResourceUserId = appletGetAppletResourceUserId();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void _hidsysCleanup(void) {
|
||||
|
@ -18,7 +18,7 @@ static bool g_irsSensorActivated;
|
||||
|
||||
static IrsCameraEntry g_irsCameras[8];
|
||||
|
||||
static Result _irsGetIrsensorSharedMemoryHandle(Handle* handle_out, u64 AppletResourceUserId);
|
||||
static Result _irsGetIrsensorSharedMemoryHandle(Handle* handle_out);
|
||||
|
||||
NX_GENERATE_SERVICE_GUARD(irs);
|
||||
|
||||
@ -29,15 +29,11 @@ Result _irsInitialize(void) {
|
||||
g_irsSensorActivated = 0;
|
||||
memset(g_irsCameras, 0, sizeof(g_irsCameras));
|
||||
|
||||
// If this failed (for example because we're a sysmodule) AppletResourceUserId stays zero
|
||||
u64 AppletResourceUserId=0;
|
||||
appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
|
||||
rc = smGetService(&g_irsSrv, "irs");
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = _irsGetIrsensorSharedMemoryHandle(&sharedmem_handle, AppletResourceUserId);
|
||||
rc = _irsGetIrsensorSharedMemoryHandle(&sharedmem_handle);
|
||||
|
||||
if (R_SUCCEEDED(rc)) {
|
||||
shmemLoadRemote(&g_irsSharedmem, sharedmem_handle, 0x8000, Perm_R);
|
||||
@ -131,11 +127,7 @@ Result irsActivateIrsensor(bool activate) {
|
||||
if (g_irsSensorActivated==activate) return 0;
|
||||
|
||||
Result rc=0;
|
||||
u64 AppletResourceUserId=0;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
u64 AppletResourceUserId = appletGetAppletResourceUserId();
|
||||
|
||||
rc = serviceDispatchIn(&g_irsSrv, activate ? 302 : 303, AppletResourceUserId,
|
||||
.in_send_pid = true,
|
||||
@ -144,7 +136,9 @@ Result irsActivateIrsensor(bool activate) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
static Result _irsGetIrsensorSharedMemoryHandle(Handle* handle_out, u64 AppletResourceUserId) {
|
||||
static Result _irsGetIrsensorSharedMemoryHandle(Handle* handle_out) {
|
||||
u64 AppletResourceUserId = appletGetAppletResourceUserId();
|
||||
|
||||
return serviceDispatchIn(&g_irsSrv, 304, AppletResourceUserId,
|
||||
.in_send_pid = true,
|
||||
.out_handle_attrs = { SfOutHandleAttr_HipcCopy },
|
||||
@ -152,11 +146,11 @@ static Result _irsGetIrsensorSharedMemoryHandle(Handle* handle_out, u64 AppletRe
|
||||
);
|
||||
}
|
||||
|
||||
static Result _irsStopImageProcessor(u32 IrCameraHandle, u64 AppletResourceUserId) {
|
||||
static Result _irsStopImageProcessor(u32 IrCameraHandle) {
|
||||
const struct {
|
||||
u32 IrCameraHandle;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { IrCameraHandle, AppletResourceUserId };
|
||||
} in = { IrCameraHandle, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_irsSrv, 305, in,
|
||||
.in_send_pid = true,
|
||||
@ -165,16 +159,11 @@ static Result _irsStopImageProcessor(u32 IrCameraHandle, u64 AppletResourceUserI
|
||||
|
||||
Result irsStopImageProcessor(u32 IrCameraHandle) {
|
||||
Result rc=0;
|
||||
u64 AppletResourceUserId=0;
|
||||
IrsCameraEntry *entry = NULL;
|
||||
|
||||
if (!serviceIsActive(&g_irsSrv))
|
||||
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = _IrsCameraEntryGet(IrCameraHandle, &entry);
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
@ -182,19 +171,19 @@ Result irsStopImageProcessor(u32 IrCameraHandle) {
|
||||
if (entry->transfermem.handle == INVALID_HANDLE)
|
||||
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
|
||||
|
||||
rc = _irsStopImageProcessor(IrCameraHandle, AppletResourceUserId);
|
||||
rc = _irsStopImageProcessor(IrCameraHandle);
|
||||
_IrsCameraEntryFree(entry);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static Result _irsRunImageTransferProcessor(u32 IrCameraHandle, u64 AppletResourceUserId, IrsPackedImageTransferProcessorConfig *config, TransferMemory *tmem) {
|
||||
static Result _irsRunImageTransferProcessor(u32 IrCameraHandle, IrsPackedImageTransferProcessorConfig *config, TransferMemory *tmem) {
|
||||
const struct {
|
||||
u32 IrCameraHandle;
|
||||
u32 pad;
|
||||
u64 AppletResourceUserId;
|
||||
IrsPackedImageTransferProcessorConfig config;
|
||||
u64 TransferMemory_size;
|
||||
} in = { IrCameraHandle, 0, AppletResourceUserId, *config, tmem->size };
|
||||
} in = { IrCameraHandle, 0, appletGetAppletResourceUserId(), *config, tmem->size };
|
||||
|
||||
return serviceDispatchIn(&g_irsSrv, 308, in,
|
||||
.in_send_pid = true,
|
||||
@ -205,7 +194,6 @@ static Result _irsRunImageTransferProcessor(u32 IrCameraHandle, u64 AppletResour
|
||||
|
||||
Result irsRunImageTransferProcessor(u32 IrCameraHandle, IrsImageTransferProcessorConfig *config, size_t size) {
|
||||
Result rc=0;
|
||||
u64 AppletResourceUserId=0;
|
||||
IrsCameraEntry *entry = NULL;
|
||||
IrsPackedImageTransferProcessorConfig packed_config;
|
||||
|
||||
@ -218,10 +206,6 @@ Result irsRunImageTransferProcessor(u32 IrCameraHandle, IrsImageTransferProcesso
|
||||
packed_config.unk_constant = 0xa0003;
|
||||
packed_config.sensor_res = config->sensor_res;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = _IrsCameraEntryAlloc(IrCameraHandle, &entry);
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
@ -229,18 +213,18 @@ Result irsRunImageTransferProcessor(u32 IrCameraHandle, IrsImageTransferProcesso
|
||||
rc = tmemCreate(&entry->transfermem, size, Perm_None);
|
||||
if (R_FAILED(rc)) return rc;
|
||||
|
||||
rc = _irsRunImageTransferProcessor(IrCameraHandle, AppletResourceUserId, &packed_config, &entry->transfermem);
|
||||
rc = _irsRunImageTransferProcessor(IrCameraHandle, &packed_config, &entry->transfermem);
|
||||
|
||||
if (R_FAILED(rc)) _IrsCameraEntryFree(entry);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static Result _irsGetImageTransferProcessorState(u32 IrCameraHandle, u64 AppletResourceUserId, void* buffer, size_t size, IrsImageTransferProcessorState *state) {
|
||||
Result irsGetImageTransferProcessorState(u32 IrCameraHandle, void* buffer, size_t size, IrsImageTransferProcessorState *state) {
|
||||
const struct {
|
||||
u32 IrCameraHandle;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { IrCameraHandle, AppletResourceUserId };
|
||||
} in = { IrCameraHandle, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchInOut(&g_irsSrv, 309, in, *state,
|
||||
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||
@ -249,18 +233,6 @@ static Result _irsGetImageTransferProcessorState(u32 IrCameraHandle, u64 AppletR
|
||||
);
|
||||
}
|
||||
|
||||
Result irsGetImageTransferProcessorState(u32 IrCameraHandle, void* buffer, size_t size, IrsImageTransferProcessorState *state) {
|
||||
Result rc=0;
|
||||
u64 AppletResourceUserId=0;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = _irsGetImageTransferProcessorState(IrCameraHandle, AppletResourceUserId, buffer, size, state);
|
||||
return rc;
|
||||
}
|
||||
|
||||
void irsGetDefaultImageTransferProcessorConfig(IrsImageTransferProcessorConfig *config) {
|
||||
memset(config, 0, sizeof(IrsImageTransferProcessorConfig));
|
||||
|
||||
@ -276,26 +248,13 @@ Result irsGetIrCameraHandle(u32 *IrCameraHandle, HidControllerID id) {
|
||||
return serviceDispatchInOut(&g_irsSrv, 311, tmp, *IrCameraHandle);
|
||||
}
|
||||
|
||||
static Result _irsSuspendImageProcessor(u32 IrCameraHandle, u64 AppletResourceUserId) {
|
||||
Result irsSuspendImageProcessor(u32 IrCameraHandle) {
|
||||
const struct {
|
||||
u32 IrCameraHandle;
|
||||
u64 AppletResourceUserId;
|
||||
} in = { IrCameraHandle, AppletResourceUserId };
|
||||
} in = { IrCameraHandle, appletGetAppletResourceUserId() };
|
||||
|
||||
return serviceDispatchIn(&g_irsSrv, 313, in,
|
||||
.in_send_pid = true,
|
||||
);
|
||||
}
|
||||
|
||||
Result irsSuspendImageProcessor(u32 IrCameraHandle) {
|
||||
Result rc=0;
|
||||
u64 AppletResourceUserId=0;
|
||||
|
||||
rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = _irsSuspendImageProcessor(IrCameraHandle, AppletResourceUserId);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ static const NfcRequiredMcuVersionData g_nfcVersionData[2] = {
|
||||
};
|
||||
|
||||
static Result _nfcCreateInterface(Service* srv, Service* srv_out);
|
||||
static Result _nfcInterfaceInitialize(Service* srv, u64 aruid, const NfcRequiredMcuVersionData *version, s32 count, u32 cmd_id);
|
||||
static Result _nfcInterfaceInitialize(Service* srv, const NfcRequiredMcuVersionData *version, s32 count, u32 cmd_id);
|
||||
|
||||
static Result _nfcCmdNoIO(Service* srv, u32 cmd_id);
|
||||
static Result _nfcCmdInDevhandleNoOut(Service* srv, const NfcDeviceHandle *handle, u32 cmd_id);
|
||||
@ -34,10 +34,6 @@ NX_GENERATE_SERVICE_GUARD_PARAMS(nfp, (NfpServiceType service_type), (service_ty
|
||||
|
||||
Result _nfpInitialize(NfpServiceType service_type) {
|
||||
Result rc = MAKERESULT(Module_Libnx, LibnxError_BadInput);
|
||||
u64 aruid = 0;
|
||||
|
||||
// If this fails (for example because we're a sysmodule) aruid stays zero
|
||||
appletGetAppletResourceUserId(&aruid);
|
||||
|
||||
g_nfpServiceType = service_type;
|
||||
switch (g_nfpServiceType) {
|
||||
@ -59,7 +55,7 @@ Result _nfpInitialize(NfpServiceType service_type) {
|
||||
rc = _nfcCreateInterface(&g_nfpSrv, &g_nfpInterface);
|
||||
|
||||
if (R_SUCCEEDED(rc))
|
||||
rc = _nfcInterfaceInitialize(&g_nfpInterface, aruid, g_nfcVersionData, 2, 0);
|
||||
rc = _nfcInterfaceInitialize(&g_nfpInterface, g_nfcVersionData, 2, 0);
|
||||
|
||||
return rc;
|
||||
}
|
||||
@ -74,10 +70,6 @@ NX_GENERATE_SERVICE_GUARD_PARAMS(nfc, (NfcServiceType service_type), (service_ty
|
||||
|
||||
Result _nfcInitialize(NfcServiceType service_type) {
|
||||
Result rc=0;
|
||||
u64 aruid = 0;
|
||||
|
||||
// If this fails (for example because we're a sysmodule) aruid stays zero
|
||||
appletGetAppletResourceUserId(&aruid);
|
||||
|
||||
g_nfcServiceType = service_type;
|
||||
switch (g_nfcServiceType) {
|
||||
@ -96,7 +88,7 @@ Result _nfcInitialize(NfcServiceType service_type) {
|
||||
rc = _nfcCreateInterface(&g_nfcSrv, &g_nfcInterface);
|
||||
|
||||
if (R_SUCCEEDED(rc))
|
||||
rc = _nfcInterfaceInitialize(&g_nfcInterface, aruid, g_nfcVersionData, 2, hosversionBefore(4,0,0) ? 0 : 400);
|
||||
rc = _nfcInterfaceInitialize(&g_nfcInterface, g_nfcVersionData, 2, hosversionBefore(4,0,0) ? 0 : 400);
|
||||
|
||||
return rc;
|
||||
}
|
||||
@ -199,11 +191,11 @@ static Result _nfcCmdInDevhandleOutBuffer(Service* srv, const NfcDeviceHandle *h
|
||||
);
|
||||
}
|
||||
|
||||
static Result _nfcInterfaceInitialize(Service* srv, u64 aruid, const NfcRequiredMcuVersionData *version, s32 count, u32 cmd_id) {
|
||||
static Result _nfcInterfaceInitialize(Service* srv, const NfcRequiredMcuVersionData *version, s32 count, u32 cmd_id) {
|
||||
const struct {
|
||||
u64 aruid;
|
||||
u64 zero;
|
||||
} in = { aruid, 0 };
|
||||
} in = { appletGetAppletResourceUserId(), 0 };
|
||||
|
||||
serviceAssumeDomain(srv);
|
||||
return serviceDispatchIn(srv, cmd_id, in,
|
||||
|
@ -21,7 +21,6 @@ NX_GENERATE_SERVICE_GUARD(nv);
|
||||
|
||||
Result _nvInitialize(void) {
|
||||
Result rc = MAKERESULT(Module_Libnx, LibnxError_BadInput);
|
||||
u64 AppletResourceUserId = 0;
|
||||
|
||||
switch (appletGetAppletType()) {
|
||||
case AppletType_None:
|
||||
@ -56,10 +55,10 @@ Result _nvInitialize(void) {
|
||||
rc = serviceCloneEx(&g_nvSrv, 1, &g_nvSrvClone);
|
||||
|
||||
if (R_SUCCEEDED(rc)) {
|
||||
// Send aruid if available (non-fatal condition if get-aruid fails)
|
||||
Result aruid_rc = appletGetAppletResourceUserId(&AppletResourceUserId);
|
||||
if (R_SUCCEEDED(aruid_rc))
|
||||
rc = _nvSetClientPID(AppletResourceUserId);
|
||||
// Send aruid if available
|
||||
u64 aruid = appletGetAppletResourceUserId();
|
||||
if (aruid)
|
||||
rc = _nvSetClientPID(aruid);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -285,7 +285,7 @@ Result viSetContentVisibility(bool v) {
|
||||
return serviceDispatchIn(&g_viIManagerDisplayService, 7000, tmp);
|
||||
}
|
||||
|
||||
static Result _viOpenLayer(const ViDisplay *display, u64 layer_id, u64 aruid, u8 native_window[0x100], u64 *native_window_size) {
|
||||
static Result _viOpenLayer(const ViDisplay *display, u64 layer_id, u8 native_window[0x100], u64 *native_window_size) {
|
||||
if (!display->initialized) {
|
||||
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
|
||||
}
|
||||
@ -294,7 +294,7 @@ static Result _viOpenLayer(const ViDisplay *display, u64 layer_id, u64 aruid, u8
|
||||
ViDisplayName display_name;
|
||||
u64 layer_id;
|
||||
u64 aruid;
|
||||
} in = { display->display_name, layer_id, aruid };
|
||||
} in = { display->display_name, layer_id, appletGetAppletResourceUserId() };
|
||||
return serviceDispatchInOut(&g_viIApplicationDisplayService, 2020, in, *native_window_size,
|
||||
.in_send_pid = true,
|
||||
.buffer_attrs = { SfBufferAttr_Out | SfBufferAttr_HipcMapAlias },
|
||||
@ -359,20 +359,17 @@ Result viCreateLayer(const ViDisplay *display, ViLayer *layer) {
|
||||
alignas(8) u8 native_window_raw[0x100];
|
||||
u64 native_window_size = 0;
|
||||
|
||||
u64 aruid = 0;
|
||||
appletGetAppletResourceUserId(&aruid); // failure is not fatal
|
||||
|
||||
memset(layer, 0, sizeof(ViLayer));
|
||||
layer->layer_id = __nx_vi_layer_id;
|
||||
|
||||
Result rc = 0;
|
||||
if (!layer->layer_id && aruid) {
|
||||
if (!layer->layer_id && appletGetAppletResourceUserId()) {
|
||||
rc = appletCreateManagedDisplayLayer(&layer->layer_id);
|
||||
if (R_FAILED(rc)) return rc;
|
||||
}
|
||||
|
||||
if (layer->layer_id) {
|
||||
rc = _viOpenLayer(display, layer->layer_id, aruid, native_window_raw, &native_window_size);
|
||||
rc = _viOpenLayer(display, layer->layer_id, native_window_raw, &native_window_size);
|
||||
} else {
|
||||
layer->stray_layer = true;
|
||||
rc = _viCreateStrayLayer(display, __nx_vi_stray_layer_flags, &layer->layer_id, native_window_raw, &native_window_size);
|
||||
@ -468,16 +465,14 @@ Result viSetLayerScalingMode(ViLayer *layer, ViScalingMode scaling_mode) {
|
||||
}
|
||||
|
||||
Result viGetIndirectLayerImageMap(void* buffer, size_t size, s32 width, s32 height, u64 IndirectLayerConsumerHandle, u64 *out_size, u64 *out_stride) {
|
||||
u64 aruid = 0;
|
||||
Result rc = appletGetAppletResourceUserId(&aruid);
|
||||
if (R_FAILED(rc)) return rc;
|
||||
Result rc = 0;
|
||||
|
||||
const struct {
|
||||
s64 width;
|
||||
s64 height;
|
||||
u64 IndirectLayerConsumerHandle;
|
||||
u64 aruid;
|
||||
} in = { width, height, IndirectLayerConsumerHandle, aruid };
|
||||
} in = { width, height, IndirectLayerConsumerHandle, appletGetAppletResourceUserId() };
|
||||
|
||||
struct {
|
||||
s64 size;
|
||||
|
Loading…
Reference in New Issue
Block a user