]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c
MdeModulePkg/BMMUI: Show "Change Boot/Driver order" page correctly
[mirror_edk2.git] / MdeModulePkg / Library / BootMaintenanceManagerUiLib / UpdatePage.c
index 29d3ac9a47d3c02bdeba78f11fa38465d6388db0..8194979477ba148bd660202056b9ba45d9a5019c 100644 (file)
@@ -585,14 +585,30 @@ UpdateOrderPage (
   switch (UpdatePageId) { \r
   \r
   case FORM_BOOT_CHG_ID:\r
-    GetBootOrder (CallbackData);\r
+    //\r
+    // If the BootOptionOrder in the BmmFakeNvData are same with the date in the BmmOldFakeNVData,\r
+    // means all Boot Options has been save in BootOptionMenu, we can get the date from the menu.\r
+    // else means browser maintains some uncommitted date which are not saved in BootOptionMenu,\r
+    // so we should not get the data from BootOptionMenu to show it.\r
+    //\r
+    if (CompareMem (CallbackData->BmmFakeNvData.BootOptionOrder, CallbackData->BmmOldFakeNVData.BootOptionOrder, sizeof (CallbackData->BmmFakeNvData.BootOptionOrder)) == 0) {\r
+      GetBootOrder (CallbackData);\r
+    }\r
     OptionOrder = CallbackData->BmmFakeNvData.BootOptionOrder;\r
     QuestionId = BOOT_OPTION_ORDER_QUESTION_ID;\r
     VarOffset = BOOT_OPTION_ORDER_VAR_OFFSET;\r
     break;\r
     \r
   case FORM_DRV_CHG_ID:\r
-    GetDriverOrder (CallbackData);\r
+    //\r
+    // If the DriverOptionOrder in the BmmFakeNvData are same with the date in the BmmOldFakeNVData,\r
+    // means all Driver Options has been save in DriverOptionMenu, we can get the DriverOptionOrder from the menu.\r
+    // else means browser maintains some uncommitted date which are not saved in DriverOptionMenu,\r
+    // so we should not get the data from DriverOptionMenu to show it.\r
+    //\r
+    if (CompareMem (CallbackData->BmmFakeNvData.DriverOptionOrder, CallbackData->BmmOldFakeNVData.DriverOptionOrder, sizeof (CallbackData->BmmFakeNvData.DriverOptionOrder)) == 0) {\r
+      GetDriverOrder (CallbackData);\r
+    }\r
     OptionOrder = CallbackData->BmmFakeNvData.DriverOptionOrder;\r
     QuestionId = DRIVER_OPTION_ORDER_QUESTION_ID;\r
     VarOffset = DRIVER_OPTION_ORDER_VAR_OFFSET;\r