[Kernel] Fixed incorrect amount of propagated notifications on boot
- Created dedicated method: IsUIActive
This commit is contained in:
committed by
Radosław Gliński
parent
7e1506ff23
commit
4dd0842087
@@ -910,11 +910,8 @@ void KernelState::RegisterNotifyListener(XNotifyListener* listener) {
|
||||
// https://cs.rin.ru/forum/viewtopic.php?f=38&t=60668&hilit=resident+evil+5&start=375
|
||||
if (!has_notified_startup_ && listener->mask() & kXNotifySystem) {
|
||||
has_notified_startup_ = true;
|
||||
// XN_SYS_UI (on, off)
|
||||
listener->EnqueueNotification(kXNotificationSystemUI, 1);
|
||||
listener->EnqueueNotification(kXNotificationSystemUI, 0);
|
||||
// XN_SYS_SIGNINCHANGED x2
|
||||
listener->EnqueueNotification(kXNotificationSystemSignInChanged, 1);
|
||||
listener->EnqueueNotification(kXNotificationSystemUI,
|
||||
xam_state()->IsUIActive());
|
||||
listener->EnqueueNotification(kXNotificationSystemSignInChanged, 1);
|
||||
}
|
||||
if (!has_notified_live_startup_ && listener->mask() & kXNotifyLive) {
|
||||
|
||||
@@ -107,7 +107,7 @@ dword_result_t XamInputGetState_entry(dword_t user_index, dword_t flags,
|
||||
return X_ERROR_DEVICE_NOT_CONNECTED;
|
||||
}
|
||||
|
||||
if (kernel_state()->xam_state()->xam_dialogs_shown_ > 0) {
|
||||
if (kernel_state()->xam_state()->IsUIActive()) {
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ dword_result_t XamInputGetKeystrokeEx_entry(
|
||||
|
||||
keystroke.Zero();
|
||||
|
||||
if (kernel_state()->xam_state()->xam_dialogs_shown_ > 0) {
|
||||
if (kernel_state()->xam_state()->IsUIActive()) {
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,11 +54,14 @@ class XamState {
|
||||
bool IsUserSignedIn(uint32_t user_index) const;
|
||||
bool IsUserSignedIn(uint64_t xuid) const;
|
||||
|
||||
//
|
||||
void LoadSpaInfo(const SpaInfo* info);
|
||||
|
||||
void SetContentRegisterCallback(uint32_t callback);
|
||||
|
||||
bool IsUIActive() const {
|
||||
return xam_dialogs_shown_ > 0 || xam_nui_dialogs_shown_ > 0;
|
||||
}
|
||||
|
||||
X_DASH_APP_INFO dash_app_info_ = {};
|
||||
uint32_t dash_backstack_nodes_count_ = 0;
|
||||
X_DASH_BACKSTACK_DATA dash_backstack_data_[2] = {};
|
||||
|
||||
@@ -390,7 +390,7 @@ static dword_result_t XamShowMessageBoxUi(
|
||||
}
|
||||
|
||||
dword_result_t XamIsUIActive_entry() {
|
||||
return kernel_state()->xam_state()->xam_dialogs_shown_ > 0;
|
||||
return kernel_state()->xam_state()->IsUIActive();
|
||||
}
|
||||
DECLARE_XAM_EXPORT2(XamIsUIActive, kUI, kImplemented, kHighFrequency);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user