summaryrefslogtreecommitdiffstats
path: root/IntelFrameworkModulePkg
diff options
context:
space:
mode:
authorDandan Bi <dandan.bi@intel.com>2018-09-09 22:29:56 +0800
committerEric Dong <eric.dong@intel.com>2018-09-14 10:18:31 +0800
commitf92b8ee3b7a621d0db8708ec05ee13639436b4a9 (patch)
treec600a6ef8c2a847bb1366579ecb30acf4a909275 /IntelFrameworkModulePkg
parent9c8e9e76bd06014e430ecfa6c8f8e21374005a29 (diff)
downloadedk2-f92b8ee3b7a621d0db8708ec05ee13639436b4a9.tar.gz
edk2-f92b8ee3b7a621d0db8708ec05ee13639436b4a9.tar.bz2
edk2-f92b8ee3b7a621d0db8708ec05ee13639436b4a9.zip
IntelFrameworkModulePkg: Avoid key notification called more than once
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=996 Issue: In current code logic, when a key is pressed, it will search the whole NotifyList to find whether a notification has been registered with the keystroke. if yes, it will en-queue the key for notification execution later. And now if different notification functions have been registered with the same key, then the key will be en-queued more than once. Then it will cause the notification executed more than once. This patch is to enhance the code logic to fix this issue. Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Diffstat (limited to 'IntelFrameworkModulePkg')
-rw-r--r--IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KbdCtrller.c1
-rw-r--r--IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KbdCtrller.c b/IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KbdCtrller.c
index 202588191e..fddb0b21fb 100644
--- a/IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KbdCtrller.c
+++ b/IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KbdCtrller.c
@@ -1487,6 +1487,7 @@ KeyGetchar (
//
PushEfikeyBufTail (&ConsoleIn->EfiKeyQueueForNotify, &KeyData);
gBS->SignalEvent (ConsoleIn->KeyNotifyProcessEvent);
+ break;
}
}
diff --git a/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c b/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c
index 63f6303995..bee5f8f5e5 100644
--- a/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c
+++ b/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c
@@ -1986,6 +1986,7 @@ BiosKeyboardTimerHandler (
//
Enqueue (&BiosKeyboardPrivate->QueueForNotify, &KeyData);
gBS->SignalEvent (BiosKeyboardPrivate->KeyNotifyProcessEvent);
+ break;
}
}