summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg
diff options
context:
space:
mode:
authorWalon Li <walon.li@hpe.com>2022-06-24 14:07:47 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2022-07-22 06:19:53 +0000
commit343f37b5c07fd261b0fe8f3236459c9071be38b7 (patch)
treeef30351321b4fd0ec036db9e6a210874e6f0a8c1 /MdeModulePkg
parent494f333aba024cf8e695fda78594e5cac210c7a3 (diff)
downloadedk2-343f37b5c07fd261b0fe8f3236459c9071be38b7.tar.gz
edk2-343f37b5c07fd261b0fe8f3236459c9071be38b7.tar.bz2
edk2-343f37b5c07fd261b0fe8f3236459c9071be38b7.zip
MdeModulePkg/SetupBrowserDxe:Follow spec'd way to reconnect driver
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3952 In UEFI spec, it defines reconnect timing that will be activated upon exiting of the formset or the browser. However, we did't use this kind of way to check reconnect conditioncode. Code only blocks reconnect if page is updated dynamically. That's not matched spec'd way. We should check current formset whether is exiting, then reconnect driver. Signed-off-by: Walon Li <walon.li@hpe.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Diffstat (limited to 'MdeModulePkg')
-rw-r--r--MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c4
-rw-r--r--MdeModulePkg/Universal/SetupBrowserDxe/Setup.c9
2 files changed, 4 insertions, 9 deletions
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c b/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
index 9587b08d6d..babef21497 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
@@ -2,7 +2,7 @@
Utility functions for UI presentation.
Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
-(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
+(C) Copyright 2015 - 2022 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -21,7 +21,6 @@ LIST_ENTRY mRefreshEventList = INITIALIZE_LIST_HEAD_VARIABLE (mR
UINT16 mCurFakeQestId;
FORM_DISPLAY_ENGINE_FORM gDisplayFormData;
BOOLEAN mFinishRetrieveCall = FALSE;
-BOOLEAN mDynamicFormUpdated = FALSE;
/**
Check whether the ConfigAccess protocol is available.
@@ -1791,7 +1790,6 @@ FormUpdateNotify (
)
{
mHiiPackageListUpdated = TRUE;
- mDynamicFormUpdated = TRUE;
return EFI_SUCCESS;
}
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
index fe0d46d93f..5158baf5bd 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
@@ -2,7 +2,7 @@
Entry and initialization module for the browser.
Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
-(C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+(C) Copyright 2020 - 2022 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -68,7 +68,6 @@ extern EFI_GUID mCurrentFormSetGuid;
extern EFI_HII_HANDLE mCurrentHiiHandle;
extern UINT16 mCurrentFormId;
extern FORM_DISPLAY_ENGINE_FORM gDisplayFormData;
-extern BOOLEAN mDynamicFormUpdated;
/**
Create a menu with specified formset GUID and form ID, and add it as a child
@@ -539,7 +538,6 @@ SendForm (
Selection->FormSet = FormSet;
mSystemLevelFormSet = FormSet;
- mDynamicFormUpdated = FALSE;
//
// Display this formset
@@ -552,10 +550,9 @@ SendForm (
mSystemLevelFormSet = NULL;
//
- // If callback update form dynamically, it's not exiting of the formset for user so system do not reconnect driver hanlde
- // this time.
+ // Check incoming formset whether is same with previous. If yes, that means action is not exiting of formset so do not reconnect controller.
//
- if (!mDynamicFormUpdated && (gFlagReconnect || gCallbackReconnect)) {
+ if ((gFlagReconnect || gCallbackReconnect) && !CompareGuid (&FormSet->Guid, &Selection->FormSetGuid)) {
RetVal = ReconnectController (FormSet->DriverHandle);
if (!RetVal) {
PopupErrorMessage (BROWSER_RECONNECT_FAIL, NULL, NULL, NULL);