BOOLEAN mSystemSubmit = FALSE;\r
BOOLEAN gResetRequired;\r
BOOLEAN gExitRequired;\r
+BOOLEAN gFlagReconnect;\r
+BOOLEAN gCallbackReconnect;\r
BROWSER_SETTING_SCOPE gBrowserSettingScope = FormSetLevel;\r
BOOLEAN mBrowserScopeFirstSet = TRUE;\r
EXIT_HANDLER ExitHandlerFunction = NULL;\r
UINTN Index;\r
FORM_BROWSER_FORMSET *FormSet;\r
FORM_ENTRY_INFO *MenuList;\r
+ BOOLEAN RetVal;\r
\r
//\r
// If EDKII_FORM_DISPLAY_ENGINE_PROTOCOL not found, return EFI_UNSUPPORTED.\r
//\r
SaveBrowserContext ();\r
\r
+ gFlagReconnect = FALSE;\r
gResetRequired = FALSE;\r
gExitRequired = FALSE;\r
+ gCallbackReconnect = FALSE;\r
Status = EFI_SUCCESS;\r
gEmptyString = L"";\r
gDisplayFormData.ScreenDimensions = (EFI_SCREEN_DESCRIPTOR *) ScreenDimensions;\r
gCurrentSelection = NULL;\r
mSystemLevelFormSet = NULL;\r
\r
+ if (gFlagReconnect || gCallbackReconnect) {\r
+ RetVal = ReconnectController (FormSet->DriverHandle);\r
+ if (!RetVal) {\r
+ PopupErrorMessage(BROWSER_RECONNECT_FAIL, NULL, NULL, NULL);\r
+ }\r
+ gFlagReconnect = FALSE;\r
+ gCallbackReconnect = FALSE;\r
+ }\r
+\r
//\r
// If no data is changed, don't need to save current FormSet into the maintain list.\r
//\r
}\r
\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ if (Question->Operand == EFI_IFR_DATE_OP){\r
+ QuestionValue->date.Year = 0xff;\r
+ QuestionValue->date.Month = 0xff;\r
+ QuestionValue->date.Day = 0xff;\r
+ } else {\r
+ QuestionValue->time.Hour = 0xff;\r
+ QuestionValue->time.Minute = 0xff;\r
+ QuestionValue->time.Second = 0xff;\r
+ }\r
+ return EFI_SUCCESS;\r
}\r
\r
if (Question->Operand == EFI_IFR_DATE_OP) {\r
//\r
// Only the changed data has been saved, then need to set the reset flag.\r
//\r
- if (SetFlag && OldValue && !Question->ValueChanged && ((Question->QuestionFlags & EFI_IFR_FLAG_RESET_REQUIRED) != 0)) {\r
- gResetRequired = TRUE;\r
+ if (SetFlag && OldValue && !Question->ValueChanged) {\r
+ if ((Question->QuestionFlags & EFI_IFR_FLAG_RESET_REQUIRED) != 0) {\r
+ gResetRequired = TRUE;\r
+ }\r
+\r
+ if ((Question->QuestionFlags & EFI_IFR_FLAG_RECONNECT_REQUIRED) != 0) {\r
+ gFlagReconnect = TRUE;\r
+ }\r
} \r
}\r
}\r
//\r
Context->Selection = gCurrentSelection;\r
Context->ResetRequired = gResetRequired;\r
+ Context->FlagReconnect = gFlagReconnect;\r
+ Context->CallbackReconnect = gCallbackReconnect;\r
Context->ExitRequired = gExitRequired;\r
Context->HiiHandle = mCurrentHiiHandle;\r
Context->FormId = mCurrentFormId;\r
//\r
gCurrentSelection = Context->Selection;\r
gResetRequired = Context->ResetRequired;\r
+ gFlagReconnect = Context->FlagReconnect;\r
+ gCallbackReconnect = Context->CallbackReconnect;\r
gExitRequired = Context->ExitRequired;\r
mCurrentHiiHandle = Context->HiiHandle;\r
mCurrentFormId = Context->FormId;\r