X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=IntelFrameworkModulePkg%2FUniversal%2FBdsDxe%2FBootMaint%2FFileExplorer.c;h=733632b9f47fb184d3fd558bfb1b50052129c134;hp=b77e909ad538d7a4d92356ef5ee3d419d84fce82;hb=847240774030f9da79140a9d515a64ec817eb6eb;hpb=3a4e7a3e73a40eecbb0a977a0e7421ff5743c353 diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/FileExplorer.c b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/FileExplorer.c index b77e909ad5..733632b9f4 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/FileExplorer.c +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/FileExplorer.c @@ -253,21 +253,27 @@ FileExplorerCallback ( FILE_EXPLORER_NV_DATA *NvRamMap; EFI_STATUS Status; - if (Action == EFI_BROWSER_ACTION_CHANGING) { - if ((Value == NULL) || (ActionRequest == NULL)) { - return EFI_INVALID_PARAMETER; - } - - Status = EFI_SUCCESS; - Private = FE_CALLBACK_DATA_FROM_THIS (This); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_NONE; - + if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) { // - // Retrieve uncommitted data from Form Browser + // All other action return unsupported. // - NvRamMap = &Private->FeFakeNvData; - HiiGetBrowserData (&gFileExploreFormSetGuid, mFileExplorerStorageName, sizeof (FILE_EXPLORER_NV_DATA), (UINT8 *) NvRamMap); + return EFI_UNSUPPORTED; + } + + Status = EFI_SUCCESS; + Private = FE_CALLBACK_DATA_FROM_THIS (This); + // + // Retrieve uncommitted data from Form Browser + // + NvRamMap = &Private->FeFakeNvData; + HiiGetBrowserData (&gFileExploreFormSetGuid, mFileExplorerStorageName, sizeof (FILE_EXPLORER_NV_DATA), (UINT8 *) NvRamMap); + + if (Action == EFI_BROWSER_ACTION_CHANGED) { + if ((Value == NULL) || (ActionRequest == NULL)) { + return EFI_INVALID_PARAMETER; + } + if (QuestionId == KEY_VALUE_SAVE_AND_EXIT_BOOT || QuestionId == KEY_VALUE_SAVE_AND_EXIT_DRIVER) { // // Apply changes and exit formset @@ -309,16 +315,16 @@ FileExplorerCallback ( // Exit File Explorer formset // *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT; - } else { - if (UpdateFileExplorer (Private, QuestionId)) { - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT; - } } - - return Status; + } else if (Action == EFI_BROWSER_ACTION_CHANGING) { + if (Value == NULL) { + return EFI_INVALID_PARAMETER; + } + + if (QuestionId >= FILE_OPTION_OFFSET) { + UpdateFileExplorer (Private, QuestionId); + } } - // - // All other action return unsupported. - // - return EFI_UNSUPPORTED; + + return Status; }