]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c
Move update legacy order logic from CHANGING to CHANGED.
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / BootMaint / BootMaint.c
index 44d9b71c400e4ff06b41eebc6c9961e0cf2de171..5f200e2e16e2ad7391fa9ae71b45521f24b6f75c 100644 (file)
@@ -316,6 +316,106 @@ BootMaintCallback (
     \r
     UpdatePageId (Private, QuestionId);\r
 \r
+    if (QuestionId < FILE_OPTION_OFFSET) {\r
+      if (QuestionId < CONFIG_OPTION_OFFSET) {\r
+        switch (QuestionId) {\r
+        case KEY_VALUE_BOOT_FROM_FILE:\r
+          Private->FeCurrentState = FileExplorerStateBootFromFile;\r
+          break;\r
+\r
+        case FORM_BOOT_ADD_ID:\r
+          Private->FeCurrentState = FileExplorerStateAddBootOption;\r
+          break;\r
+\r
+        case FORM_DRV_ADD_FILE_ID:\r
+          Private->FeCurrentState = FileExplorerStateAddDriverOptionState;\r
+          break;\r
+\r
+        case FORM_DRV_ADD_HANDLE_ID:\r
+          CleanUpPage (FORM_DRV_ADD_HANDLE_ID, Private);\r
+          UpdateDrvAddHandlePage (Private);\r
+          break;\r
+\r
+        case FORM_BOOT_DEL_ID:\r
+          CleanUpPage (FORM_BOOT_DEL_ID, Private);\r
+          UpdateBootDelPage (Private);\r
+          break;\r
+\r
+        case FORM_BOOT_CHG_ID:\r
+        case FORM_DRV_CHG_ID:\r
+          UpdatePageBody (QuestionId, Private);\r
+          break;\r
+\r
+        case FORM_DRV_DEL_ID:\r
+          CleanUpPage (FORM_DRV_DEL_ID, Private);\r
+          UpdateDrvDelPage (Private);\r
+          break;\r
+\r
+        case FORM_BOOT_NEXT_ID:\r
+          CleanUpPage (FORM_BOOT_NEXT_ID, Private);\r
+          UpdateBootNextPage (Private);\r
+          break;\r
+\r
+        case FORM_TIME_OUT_ID:\r
+          CleanUpPage (FORM_TIME_OUT_ID, Private);\r
+          UpdateTimeOutPage (Private);\r
+          break;\r
+\r
+        case FORM_CON_IN_ID:\r
+        case FORM_CON_OUT_ID:\r
+        case FORM_CON_ERR_ID:\r
+          UpdatePageBody (QuestionId, Private);\r
+          break;\r
+\r
+        case FORM_CON_MODE_ID:\r
+          CleanUpPage (FORM_CON_MODE_ID, Private);\r
+          UpdateConModePage (Private);\r
+          break;\r
+\r
+        case FORM_CON_COM_ID:\r
+          CleanUpPage (FORM_CON_COM_ID, Private);\r
+          UpdateConCOMPage (Private);\r
+          break;\r
+\r
+        case FORM_SET_FD_ORDER_ID:\r
+        case FORM_SET_HD_ORDER_ID:\r
+        case FORM_SET_CD_ORDER_ID:\r
+        case FORM_SET_NET_ORDER_ID:\r
+        case FORM_SET_BEV_ORDER_ID:\r
+          CleanUpPage (QuestionId, Private);\r
+          UpdateSetLegacyDeviceOrderPage (QuestionId, Private);\r
+          break;\r
+\r
+        default:\r
+          break;\r
+        }\r
+      } else if ((QuestionId >= TERMINAL_OPTION_OFFSET) && (QuestionId < CONSOLE_OPTION_OFFSET)) {\r
+        Index2                    = (UINT16) (QuestionId - TERMINAL_OPTION_OFFSET);\r
+        Private->CurrentTerminal  = Index2;\r
+\r
+        CleanUpPage (FORM_CON_COM_SETUP_ID, Private);\r
+        UpdateTerminalPage (Private);\r
+\r
+      } else if (QuestionId >= HANDLE_OPTION_OFFSET) {\r
+        Index2                  = (UINT16) (QuestionId - HANDLE_OPTION_OFFSET);\r
+\r
+        NewMenuEntry            = BOpt_GetMenuEntry (&DriverMenu, Index2);\r
+        ASSERT (NewMenuEntry != NULL);\r
+        Private->HandleContext  = (BM_HANDLE_CONTEXT *) NewMenuEntry->VariableContext;\r
+\r
+        CleanUpPage (FORM_DRV_ADD_HANDLE_DESC_ID, Private);\r
+\r
+        Private->MenuEntry                  = NewMenuEntry;\r
+        Private->LoadContext->FilePathList  = Private->HandleContext->DevicePath;\r
+\r
+        UpdateDriverAddHandleDescPage (Private);\r
+      }\r
+    }\r
+  } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+    if ((Value == NULL) || (ActionRequest == NULL)) {\r
+      return EFI_INVALID_PARAMETER;\r
+    }\r
+    \r
     //\r
     // need to be subtituded.\r
     //\r
@@ -466,133 +566,33 @@ BootMaintCallback (
         //\r
         Value->u8 = NewLegacyDev[Index3];\r
       }\r
-    }\r
-\r
-    if (QuestionId < FILE_OPTION_OFFSET) {\r
-      if (QuestionId < CONFIG_OPTION_OFFSET) {\r
-        switch (QuestionId) {\r
-        case KEY_VALUE_BOOT_FROM_FILE:\r
-          Private->FeCurrentState = FileExplorerStateBootFromFile;\r
-          break;\r
-\r
-        case FORM_BOOT_ADD_ID:\r
-          Private->FeCurrentState = FileExplorerStateAddBootOption;\r
-          break;\r
-\r
-        case FORM_DRV_ADD_FILE_ID:\r
-          Private->FeCurrentState = FileExplorerStateAddDriverOptionState;\r
-          break;\r
-\r
-        case FORM_DRV_ADD_HANDLE_ID:\r
-          CleanUpPage (FORM_DRV_ADD_HANDLE_ID, Private);\r
-          UpdateDrvAddHandlePage (Private);\r
-          break;\r
-\r
-        case FORM_BOOT_DEL_ID:\r
-          CleanUpPage (FORM_BOOT_DEL_ID, Private);\r
-          UpdateBootDelPage (Private);\r
-          break;\r
-\r
-        case FORM_BOOT_CHG_ID:\r
-        case FORM_DRV_CHG_ID:\r
-          UpdatePageBody (QuestionId, Private);\r
-          break;\r
-\r
-        case FORM_DRV_DEL_ID:\r
-          CleanUpPage (FORM_DRV_DEL_ID, Private);\r
-          UpdateDrvDelPage (Private);\r
-          break;\r
-\r
-        case FORM_BOOT_NEXT_ID:\r
-          CleanUpPage (FORM_BOOT_NEXT_ID, Private);\r
-          UpdateBootNextPage (Private);\r
-          break;\r
-\r
-        case FORM_TIME_OUT_ID:\r
-          CleanUpPage (FORM_TIME_OUT_ID, Private);\r
-          UpdateTimeOutPage (Private);\r
-          break;\r
-\r
-        case FORM_CON_IN_ID:\r
-        case FORM_CON_OUT_ID:\r
-        case FORM_CON_ERR_ID:\r
-          UpdatePageBody (QuestionId, Private);\r
-          break;\r
-\r
-        case FORM_CON_MODE_ID:\r
-          CleanUpPage (FORM_CON_MODE_ID, Private);\r
-          UpdateConModePage (Private);\r
-          break;\r
-\r
-        case FORM_CON_COM_ID:\r
-          CleanUpPage (FORM_CON_COM_ID, Private);\r
-          UpdateConCOMPage (Private);\r
-          break;\r
-\r
-        case FORM_SET_FD_ORDER_ID:\r
-        case FORM_SET_HD_ORDER_ID:\r
-        case FORM_SET_CD_ORDER_ID:\r
-        case FORM_SET_NET_ORDER_ID:\r
-        case FORM_SET_BEV_ORDER_ID:\r
-          CleanUpPage (QuestionId, Private);\r
-          UpdateSetLegacyDeviceOrderPage (QuestionId, Private);\r
-          break;\r
-\r
-        default:\r
-          break;\r
+    } else {\r
+      switch (QuestionId) {\r
+      case KEY_VALUE_SAVE_AND_EXIT:\r
+      case KEY_VALUE_NO_SAVE_AND_EXIT:\r
+        if (QuestionId == KEY_VALUE_SAVE_AND_EXIT) {\r
+          Status = ApplyChangeHandler (Private, CurrentFakeNVMap, Private->BmmPreviousPageId);\r
+          if (EFI_ERROR (Status)) {\r
+            return Status;\r
+          }\r
+        } else if (QuestionId == KEY_VALUE_NO_SAVE_AND_EXIT) {\r
+          DiscardChangeHandler (Private, CurrentFakeNVMap);\r
         }\r
-      } else if ((QuestionId >= TERMINAL_OPTION_OFFSET) && (QuestionId < CONSOLE_OPTION_OFFSET)) {\r
-        Index2                    = (UINT16) (QuestionId - TERMINAL_OPTION_OFFSET);\r
-        Private->CurrentTerminal  = Index2;\r
-\r
-        CleanUpPage (FORM_CON_COM_SETUP_ID, Private);\r
-        UpdateTerminalPage (Private);\r
-\r
-      } else if (QuestionId >= HANDLE_OPTION_OFFSET) {\r
-        Index2                  = (UINT16) (QuestionId - HANDLE_OPTION_OFFSET);\r
 \r
-        NewMenuEntry            = BOpt_GetMenuEntry (&DriverMenu, Index2);\r
-        ASSERT (NewMenuEntry != NULL);\r
-        Private->HandleContext  = (BM_HANDLE_CONTEXT *) NewMenuEntry->VariableContext;\r
-\r
-        CleanUpPage (FORM_DRV_ADD_HANDLE_DESC_ID, Private);\r
+        //\r
+        // Tell browser not to ask for confirmation of changes,\r
+        // since we have already applied or discarded.\r
+        //\r
+        *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;\r
+        break;  \r
 \r
-        Private->MenuEntry                  = NewMenuEntry;\r
-        Private->LoadContext->FilePathList  = Private->HandleContext->DevicePath;\r
+      case FORM_RESET:\r
+        gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);\r
+        return EFI_UNSUPPORTED;\r
 \r
-        UpdateDriverAddHandleDescPage (Private);\r
-      }\r
-    }\r
-  } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
-    if ((Value == NULL) || (ActionRequest == NULL)) {\r
-      return EFI_INVALID_PARAMETER;\r
-    }\r
-    \r
-    switch (QuestionId) {\r
-    case KEY_VALUE_SAVE_AND_EXIT:\r
-    case KEY_VALUE_NO_SAVE_AND_EXIT:\r
-      if (QuestionId == KEY_VALUE_SAVE_AND_EXIT) {\r
-        Status = ApplyChangeHandler (Private, CurrentFakeNVMap, Private->BmmPreviousPageId);\r
-        if (EFI_ERROR (Status)) {\r
-          return Status;\r
-        }\r
-      } else if (QuestionId == KEY_VALUE_NO_SAVE_AND_EXIT) {\r
-        DiscardChangeHandler (Private, CurrentFakeNVMap);\r
+      default:\r
+        break;\r
       }\r
-\r
-      //\r
-      // Tell browser not to ask for confirmation of changes,\r
-      // since we have already applied or discarded.\r
-      //\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;\r
-      break;  \r
-\r
-    case FORM_RESET:\r
-      gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);\r
-      return EFI_UNSUPPORTED;\r
-\r
-    default:\r
-      break;\r
     }\r
   }\r
 \r