]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Patch includes:
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 22 Dec 2011 06:31:40 +0000 (06:31 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 22 Dec 2011 06:31:40 +0000 (06:31 +0000)
1.Update question value after BDS change code to avoid save invalid data.
2.Fix a corner case bug that may cause unexpected popup when changing the legacy device order.
Signed-off-by: ydong10
Reviewed-by: lgao4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12892 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c

index d3215a3c866a5a892127bcb292b3614db27e3e4b..1186c0cb1907dc915fa490a673f023727d929ddc 100644 (file)
@@ -280,12 +280,12 @@ BootMaintCallback (
   UINTN             Pos;\r
   UINTN             Bit;\r
   UINT16            NewValuePos;\r
+  UINT16            Index3;  \r
   UINT16            Index2;\r
   UINT16            Index;\r
   UINT8             *OldLegacyDev;\r
   UINT8             *NewLegacyDev;\r
   UINT8             *DisMap;\r
-  EFI_FORM_ID       FormId;\r
 \r
   if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {    \r
     //\r
@@ -321,56 +321,30 @@ BootMaintCallback (
     //\r
     // Update Select FD/HD/CD/NET/BEV Order Form\r
     //\r
-    if (FORM_SET_FD_ORDER_ID == Private->BmmPreviousPageId ||\r
-        FORM_SET_HD_ORDER_ID == Private->BmmPreviousPageId ||\r
-        FORM_SET_CD_ORDER_ID == Private->BmmPreviousPageId ||\r
-        FORM_SET_NET_ORDER_ID == Private->BmmPreviousPageId ||\r
-        FORM_SET_BEV_ORDER_ID == Private->BmmPreviousPageId ||\r
-        ((FORM_BOOT_SETUP_ID == Private->BmmPreviousPageId) &&\r
-        (QuestionId >= LEGACY_FD_QUESTION_ID) &&\r
-         (QuestionId < (LEGACY_BEV_QUESTION_ID + 100)) )\r
-        ) {\r
+    if ((QuestionId >= LEGACY_FD_QUESTION_ID) && (QuestionId < LEGACY_BEV_QUESTION_ID + MAX_MENU_NUMBER)) {\r
 \r
       DisMap  = Private->BmmOldFakeNVData.DisableMap;\r
 \r
-      FormId  = Private->BmmPreviousPageId;\r
-      if (FormId == FORM_BOOT_SETUP_ID) {\r
-        FormId = Private->BmmCurrentPageId;\r
-      }\r
-\r
-      switch (FormId) {\r
-      case FORM_SET_FD_ORDER_ID:\r
+      if (QuestionId >= LEGACY_FD_QUESTION_ID && QuestionId < LEGACY_FD_QUESTION_ID + MAX_MENU_NUMBER) {\r
         Number        = (UINT16) LegacyFDMenu.MenuNumber;\r
         OldLegacyDev  = Private->BmmOldFakeNVData.LegacyFD;\r
         NewLegacyDev  = CurrentFakeNVMap->LegacyFD;\r
-        break;\r
-\r
-      case FORM_SET_HD_ORDER_ID:\r
+      } else if (QuestionId >= LEGACY_HD_QUESTION_ID && QuestionId < LEGACY_HD_QUESTION_ID + MAX_MENU_NUMBER) {\r
         Number        = (UINT16) LegacyHDMenu.MenuNumber;\r
         OldLegacyDev  = Private->BmmOldFakeNVData.LegacyHD;\r
         NewLegacyDev  = CurrentFakeNVMap->LegacyHD;\r
-        break;\r
-\r
-      case FORM_SET_CD_ORDER_ID:\r
+      } else if (QuestionId >= LEGACY_CD_QUESTION_ID && QuestionId < LEGACY_CD_QUESTION_ID + MAX_MENU_NUMBER) {\r
         Number        = (UINT16) LegacyCDMenu.MenuNumber;\r
         OldLegacyDev  = Private->BmmOldFakeNVData.LegacyCD;\r
         NewLegacyDev  = CurrentFakeNVMap->LegacyCD;\r
-        break;\r
-\r
-      case FORM_SET_NET_ORDER_ID:\r
+      } else if (QuestionId >= LEGACY_NET_QUESTION_ID && QuestionId < LEGACY_NET_QUESTION_ID + MAX_MENU_NUMBER) {\r
         Number        = (UINT16) LegacyNETMenu.MenuNumber;\r
         OldLegacyDev  = Private->BmmOldFakeNVData.LegacyNET;\r
         NewLegacyDev  = CurrentFakeNVMap->LegacyNET;\r
-        break;\r
-\r
-      case FORM_SET_BEV_ORDER_ID:\r
+      } else if (QuestionId >= LEGACY_BEV_QUESTION_ID && QuestionId < LEGACY_BEV_QUESTION_ID + MAX_MENU_NUMBER) {\r
         Number        = (UINT16) LegacyBEVMenu.MenuNumber;\r
         OldLegacyDev  = Private->BmmOldFakeNVData.LegacyBEV;\r
         NewLegacyDev  = CurrentFakeNVMap->LegacyBEV;\r
-        break;\r
-\r
-      default:\r
-        break;\r
       }\r
       //\r
       //  First, find the different position\r
@@ -455,6 +429,7 @@ BootMaintCallback (
         // To prevent DISABLE appears in the middle of the list\r
         // we should perform a re-ordering\r
         //\r
+        Index3 = Index;\r
         Index = 0;\r
         while (Index < Number) {\r
           if (0xFF != NewLegacyDev[Index]) {\r
@@ -485,6 +460,11 @@ BootMaintCallback (
           NewLegacyDev,\r
           Number\r
           );\r
+\r
+        //\r
+        //  Return correct question value.\r
+        //\r
+        Value->u8 = NewLegacyDev[Index3];\r
       }\r
     }\r
 \r