}\r
\r
NewLoadContext->Deleted = FALSE;\r
- //CallbackData->BmmFakeNvData.BootOptionDel[Index] = FALSE;\r
+\r
+ if (CallbackData->BmmFakeNvData.BootOptionDel[Index] && !CallbackData->BmmFakeNvData.BootOptionDelMark[Index]) {\r
+ //\r
+ // CallbackData->BmmFakeNvData.BootOptionDel[Index] == TRUE means browser knows this boot option is selected\r
+ // CallbackData->BmmFakeNvData.BootOptionDelMark[Index] = FALSE means BDS knows the selected boot option has\r
+ // deleted, browser maintains old useless info. So clear this info here, and later update this info to browser\r
+ // through HiiSetBrowserData function.\r
+ //\r
+ CallbackData->BmmFakeNvData.BootOptionDel[Index] = FALSE;\r
+ }\r
\r
HiiCreateCheckBoxOpCode (\r
mStartOpCodeHandle,\r
(UINT16) (BOOT_OPTION_DEL_VAR_OFFSET + Index),\r
NewMenuEntry->DisplayStringToken,\r
NewMenuEntry->HelpStringToken,\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
0,\r
NULL\r
);\r
\r
NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
NewLoadContext->Deleted = FALSE;\r
- //CallbackData->BmmFakeNvData.DriverOptionDel[Index] = FALSE;\r
+\r
+ if (CallbackData->BmmFakeNvData.DriverOptionDel[Index] && !CallbackData->BmmFakeNvData.DriverOptionDelMark[Index]) {\r
+ //\r
+ // CallbackData->BmmFakeNvData.BootOptionDel[Index] == TRUE means browser knows this boot option is selected\r
+ // CallbackData->BmmFakeNvData.BootOptionDelMark[Index] = FALSE means BDS knows the selected boot option has\r
+ // deleted, browser maintains old useless info. So clear this info here, and later update this info to browser\r
+ // through HiiSetBrowserData function.\r
+ //\r
+ CallbackData->BmmFakeNvData.DriverOptionDel[Index] = FALSE;\r
+ }\r
\r
HiiCreateCheckBoxOpCode (\r
mStartOpCodeHandle,\r
(UINT16) (DRIVER_OPTION_DEL_VAR_OFFSET + Index),\r
NewMenuEntry->DisplayStringToken,\r
NewMenuEntry->HelpStringToken,\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
0,\r
NULL\r
);\r
UINT16 Index;\r
UINT16 OptionIndex;\r
VOID *OptionsOpCodeHandle;\r
- BM_LOAD_CONTEXT *NewLoadContext;\r
BOOLEAN BootOptionFound;\r
UINT32 *OptionOrder;\r
EFI_QUESTION_ID QuestionId;\r
ASSERT (OptionsOpCodeHandle != NULL);\r
\r
NewMenuEntry = NULL;\r
- for (OptionIndex = 0; (OptionOrder[OptionIndex] != 0 && OptionIndex < MAX_MENU_NUMBER); OptionIndex++) {\r
+ for (OptionIndex = 0; (OptionIndex < MAX_MENU_NUMBER && OptionOrder[OptionIndex] != 0); OptionIndex++) {\r
BootOptionFound = FALSE;\r
for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {\r
NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index);\r
- NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
if ((UINT32) (NewMenuEntry->OptionNumber + 1) == OptionOrder[OptionIndex]) {\r
BootOptionFound = TRUE;\r
break;\r
UINT8 Index;\r
UINT8 CheckFlags;\r
BM_MENU_ENTRY *NewMenuEntry;\r
- BM_TERMINAL_CONTEXT *NewTerminalContext;\r
VOID *OptionsOpCodeHandle;\r
UINTN CurrentTerminal;\r
\r
return ;\r
}\r
\r
- NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
-\r
OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (OptionsOpCodeHandle != NULL);\r
\r
break;\r
}\r
\r
- VarData += sizeof (BBS_TYPE);\r
+ VarData = (UINT8 *)((UINTN)VarData + sizeof (BBS_TYPE));\r
VarData += *(UINT16 *) VarData;\r
DevOrder = (LEGACY_DEV_ORDER_ENTRY *) VarData;\r
}\r
NULL\r
);\r
\r
- VarDevOrder = *(UINT16 *) ((UINT8 *) DevOrder + sizeof (BBS_TYPE) + sizeof (UINT16) + Index * sizeof (UINT16));\r
+ VarDevOrder = *(UINT16 *) ((UINTN) DevOrder + sizeof (BBS_TYPE) + sizeof (UINT16) + Index * sizeof (UINT16));\r
\r
if (0xFF00 == (VarDevOrder & 0xFF00)) {\r
LegacyOrder[Index] = 0xFF;\r
UINT16 NewPageId\r
)\r
{\r
+ //\r
+ // For the question don't impact the page update, just ignore it.\r
+ //\r
+ if (((NewPageId >= BOOT_OPTION_DEL_QUESTION_ID) && (NewPageId < BOOT_OPTION_DEL_QUESTION_ID + MAX_MENU_NUMBER)) ||\r
+ ((NewPageId >= DRIVER_OPTION_DEL_QUESTION_ID) && (NewPageId < DRIVER_OPTION_DEL_QUESTION_ID + MAX_MENU_NUMBER))) {\r
+ return;\r
+ }\r
+\r
if ((NewPageId < FILE_OPTION_OFFSET) && (NewPageId >= HANDLE_OPTION_OFFSET)) {\r
//\r
// If we select a handle to add driver option, advance to the add handle description page.\r