]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
Rollback patch 14537 & 14538, because patch 14537 is not tested by Laszlo Ersek,...
[mirror_edk2.git] / MdeModulePkg / Universal / SetupBrowserDxe / Presentation.c
index b8612e8c42d0630d83a931379be35fb14e7eff1b..4cd71e5d440d04e8653243361d9d1b705045c99d 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Utility functions for UI presentation.\r
 \r
-Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -602,6 +602,7 @@ InitializeBrowserStrings (
   gSaveChanges          = GetToken (STRING_TOKEN (SAVE_CHANGES), gHiiHandle);\r
   gOptionMismatch       = GetToken (STRING_TOKEN (OPTION_MISMATCH), gHiiHandle);\r
   gFormSuppress         = GetToken (STRING_TOKEN (FORM_SUPPRESSED), gHiiHandle);\r
+  gProtocolNotFound     = GetToken (STRING_TOKEN (PROTOCOL_NOT_FOUND), gHiiHandle);\r
   return ;\r
 }\r
 \r
@@ -642,6 +643,7 @@ FreeBrowserStrings (
   FreePool (gSaveChanges);\r
   FreePool (gOptionMismatch);\r
   FreePool (gFormSuppress);\r
+  FreePool (gProtocolNotFound);\r
   return ;\r
 }\r
 \r
@@ -1242,6 +1244,7 @@ ProcessCallBackFunction (
       if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
         switch (ActionRequest) {\r
         case EFI_BROWSER_ACTION_REQUEST_RESET:\r
+          DiscardFormIsRequired = TRUE;\r
           gResetRequired = TRUE;\r
           Selection->Action = UI_ACTION_EXIT;\r
           break;\r
@@ -1252,6 +1255,7 @@ ProcessCallBackFunction (
           break;\r
 \r
         case EFI_BROWSER_ACTION_REQUEST_EXIT:\r
+          DiscardFormIsRequired = TRUE;\r
           Selection->Action = UI_ACTION_EXIT;\r
           break;\r
 \r
@@ -1436,6 +1440,15 @@ SetupBrowser (
   InsertTailList (&gBrowserFormSetList, &gOldFormSet->Link);\r
 \r
   do {\r
+    //\r
+    // IFR is updated, force to reparse the IFR binary\r
+    //\r
+    if (mHiiPackageListUpdated) {\r
+      Selection->Action = UI_ACTION_REFRESH_FORMSET;\r
+      mHiiPackageListUpdated = FALSE;\r
+      break;\r
+    }\r
+\r
     //\r
     // Initialize Selection->Form\r
     //\r
@@ -1476,11 +1489,6 @@ SetupBrowser (
       }\r
     }\r
 \r
-    //\r
-    // Reset FormPackage update flag\r
-    //\r
-    mHiiPackageListUpdated = FALSE;\r
-\r
     //\r
     // Before display new form, invoke ConfigAccess.Callback() with EFI_BROWSER_ACTION_FORM_OPEN\r
     // for each question with callback flag.\r
@@ -1564,11 +1572,6 @@ SetupBrowser (
         gResetRequired = TRUE;\r
       }\r
 \r
-      //\r
-      // Reset FormPackage update flag\r
-      //\r
-      mHiiPackageListUpdated = FALSE;\r
-\r
       if ((ConfigAccess != NULL) && \r
           ((Statement->QuestionFlags & EFI_IFR_FLAG_CALLBACK) == EFI_IFR_FLAG_CALLBACK) && \r
           (Statement->Operand != EFI_IFR_PASSWORD_OP)) {\r
@@ -1597,17 +1600,6 @@ SetupBrowser (
           ProcessCallBackFunction(Selection, Statement, EFI_BROWSER_ACTION_CHANGED, FALSE);\r
         }\r
       }\r
-\r
-      //\r
-      // Check whether Form Package has been updated during Callback\r
-      //\r
-      if (mHiiPackageListUpdated && (Selection->Action == UI_ACTION_REFRESH_FORM)) {\r
-        //\r
-        // Force to reparse IFR binary of target Formset\r
-        //\r
-        mHiiPackageListUpdated = FALSE;\r
-        Selection->Action = UI_ACTION_REFRESH_FORMSET;\r
-      }\r
     }\r
 \r
     //\r