[XAM] Fixed lack of UI notification for headless notifications.
- Fixes regression introduced in previous commit - Fixed issue with multiple input if certain UI is active
This commit is contained in:
@@ -181,6 +181,10 @@ dword_result_t XamInputGetKeystrokeEx_entry(
|
|||||||
|
|
||||||
keystroke.Zero();
|
keystroke.Zero();
|
||||||
|
|
||||||
|
if (kernel_state()->xam_state()->xam_dialogs_shown_ > 0) {
|
||||||
|
return X_ERROR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t user_index = *user_index_ptr;
|
uint32_t user_index = *user_index_ptr;
|
||||||
auto input_system = kernel_state()->emulator()->input_system();
|
auto input_system = kernel_state()->emulator()->input_system();
|
||||||
auto lock = input_system->lock();
|
auto lock = input_system->lock();
|
||||||
|
|||||||
@@ -140,8 +140,13 @@ X_RESULT xeXamDispatchDialogEx(
|
|||||||
|
|
||||||
X_RESULT xeXamDispatchHeadless(std::function<X_RESULT()> run_callback,
|
X_RESULT xeXamDispatchHeadless(std::function<X_RESULT()> run_callback,
|
||||||
uint32_t overlapped) {
|
uint32_t overlapped) {
|
||||||
auto pre = []() {};
|
auto pre = []() {
|
||||||
auto post = []() { xe::threading::Sleep(std::chrono::milliseconds(100)); };
|
kernel_state()->BroadcastNotification(kXNotificationSystemUI, true);
|
||||||
|
};
|
||||||
|
auto post = []() {
|
||||||
|
xe::threading::Sleep(std::chrono::milliseconds(100));
|
||||||
|
kernel_state()->BroadcastNotification(kXNotificationSystemUI, false);
|
||||||
|
};
|
||||||
if (!overlapped) {
|
if (!overlapped) {
|
||||||
pre();
|
pre();
|
||||||
auto result = run_callback();
|
auto result = run_callback();
|
||||||
@@ -157,8 +162,13 @@ X_RESULT xeXamDispatchHeadless(std::function<X_RESULT()> run_callback,
|
|||||||
X_RESULT xeXamDispatchHeadlessEx(
|
X_RESULT xeXamDispatchHeadlessEx(
|
||||||
std::function<X_RESULT(uint32_t&, uint32_t&)> run_callback,
|
std::function<X_RESULT(uint32_t&, uint32_t&)> run_callback,
|
||||||
uint32_t overlapped) {
|
uint32_t overlapped) {
|
||||||
auto pre = []() {};
|
auto pre = []() {
|
||||||
auto post = []() { xe::threading::Sleep(std::chrono::milliseconds(100)); };
|
kernel_state()->BroadcastNotification(kXNotificationSystemUI, true);
|
||||||
|
};
|
||||||
|
auto post = []() {
|
||||||
|
xe::threading::Sleep(std::chrono::milliseconds(100));
|
||||||
|
kernel_state()->BroadcastNotification(kXNotificationSystemUI, false);
|
||||||
|
};
|
||||||
if (!overlapped) {
|
if (!overlapped) {
|
||||||
pre();
|
pre();
|
||||||
uint32_t extended_error, length;
|
uint32_t extended_error, length;
|
||||||
|
|||||||
Reference in New Issue
Block a user