]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Update configrequest string at runtime for dynamic created question.
authorEric Dong <eric.dong@intel.com>
Tue, 18 Feb 2014 10:53:57 +0000 (10:53 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 18 Feb 2014 10:53:57 +0000 (10:53 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15247 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
MdeModulePkg/Universal/SetupBrowserDxe/Setup.h

index 5ca0700bb2086c8892f96289666b0b5597aafd08..488087e01132a50e9936bc59280074057cc5b713 100644 (file)
@@ -1957,70 +1957,6 @@ IsNvUpdateRequiredForForm (
   return FALSE;\r
 }\r
 \r
-/**\r
-  Check whether the storage data for current form set is changed.\r
-\r
-  @param  FormSet           FormSet data structure.\r
-\r
-  @retval TRUE              Data is changed.\r
-  @retval FALSE             Data is not changed.\r
-**/\r
-BOOLEAN \r
-IsStorageDataChangedForFormSet (\r
-  IN FORM_BROWSER_FORMSET             *FormSet\r
-  )\r
-{\r
-  LIST_ENTRY              *Link;\r
-  FORMSET_STORAGE         *Storage;\r
-  BROWSER_STORAGE         *BrowserStorage;\r
-  CHAR16                  *ConfigRespNew;\r
-  CHAR16                  *ConfigRespOld;\r
-  BOOLEAN                 RetVal;\r
-\r
-  RetVal        = FALSE;\r
-  ConfigRespNew = NULL;\r
-  ConfigRespOld = NULL;\r
-\r
-  //\r
-  // Request current settings from Configuration Driver\r
-  //\r
-  Link = GetFirstNode (&FormSet->StorageListHead);\r
-  while (!IsNull (&FormSet->StorageListHead, Link)) {\r
-    Storage = FORMSET_STORAGE_FROM_LINK (Link);\r
-    Link = GetNextNode (&FormSet->StorageListHead, Link);\r
-\r
-    BrowserStorage = Storage->BrowserStorage;\r
-\r
-    if (BrowserStorage->Type == EFI_HII_VARSTORE_EFI_VARIABLE) {\r
-      continue;\r
-    }\r
-\r
-    if (Storage->ElementCount == 0) {\r
-      continue;\r
-    }\r
-\r
-    StorageToConfigResp (BrowserStorage, &ConfigRespNew, Storage->ConfigRequest, TRUE);\r
-    StorageToConfigResp (BrowserStorage, &ConfigRespOld, Storage->ConfigRequest, FALSE);\r
-    ASSERT (ConfigRespNew != NULL && ConfigRespOld != NULL);\r
-\r
-    if (StrCmp (ConfigRespNew, ConfigRespOld) != 0) {\r
-      RetVal = TRUE;\r
-    }\r
-\r
-    FreePool (ConfigRespNew);\r
-    ConfigRespNew = NULL;\r
-\r
-    FreePool (ConfigRespOld);\r
-    ConfigRespOld = NULL;\r
-\r
-    if (RetVal) {\r
-      break;\r
-    }\r
-  }\r
-\r
-  return RetVal;\r
-}\r
-\r
 /**\r
   Find menu which will show next time.\r
 \r
index d1c6961a059aa0679643de48747964e06c6e9ec2..5ce0b84ed6bc53290a0120a7cffc34d38566c026 100644 (file)
@@ -417,7 +417,7 @@ SendForm (
       //\r
       // If no data is changed, don't need to save current FormSet into the maintain list.\r
       //\r
-      if (!IsNvUpdateRequiredForFormSet (FormSet) && !IsStorageDataChangedForFormSet(FormSet)) {\r
+      if (!IsNvUpdateRequiredForFormSet (FormSet)) {\r
         CleanBrowserStorage(FormSet);\r
         RemoveEntryList (&FormSet->Link);\r
         DestroyFormSet (FormSet);\r
@@ -4081,39 +4081,51 @@ LoadStorage (
         ConfigRequestAdjust(Storage);\r
         return;\r
       }\r
-\r
-      //\r
-      // Create the config request string to get all fields for this storage.\r
-      // Allocate and fill a buffer large enough to hold the <ConfigHdr> template\r
-      // followed by "&OFFSET=0&WIDTH=WWWW"followed by a Null-terminator\r
-      //\r
-      StrLen = StrSize (Storage->BrowserStorage->ConfigHdr) + 20 * sizeof (CHAR16);\r
-      ConfigRequest = AllocateZeroPool (StrLen);\r
-      ASSERT (ConfigRequest != NULL);\r
-      UnicodeSPrint (\r
-                 ConfigRequest, \r
-                 StrLen, \r
-                 L"%s&OFFSET=0&WIDTH=%04x", \r
-                 Storage->BrowserStorage->ConfigHdr,\r
-                 Storage->BrowserStorage->Size);\r
       break;\r
 \r
     case EFI_HII_VARSTORE_BUFFER:\r
     case EFI_HII_VARSTORE_NAME_VALUE:\r
       //\r
-      // Skip if there is no RequestElement or data has initilized.\r
+      // Skip if there is no RequestElement.\r
       //\r
-      if (Storage->ElementCount == 0 || Storage->BrowserStorage->Initialized) {\r
+      if (Storage->ElementCount == 0) {\r
         return;\r
       }\r
+\r
+      //\r
+      // Just update the ConfigRequest, if storage already initialized. \r
+      //\r
+      if (Storage->BrowserStorage->Initialized) {\r
+        ConfigRequestAdjust(Storage);\r
+        return;\r
+      }\r
+\r
       Storage->BrowserStorage->Initialized = TRUE;\r
-      ConfigRequest = Storage->ConfigRequest;\r
       break;\r
 \r
     default:\r
       return;\r
   }\r
 \r
+  if (Storage->BrowserStorage->Type != EFI_HII_VARSTORE_NAME_VALUE) {\r
+    //\r
+    // Create the config request string to get all fields for this storage.\r
+    // Allocate and fill a buffer large enough to hold the <ConfigHdr> template\r
+    // followed by "&OFFSET=0&WIDTH=WWWW"followed by a Null-terminator\r
+    //\r
+    StrLen = StrSize (Storage->BrowserStorage->ConfigHdr) + 20 * sizeof (CHAR16);\r
+    ConfigRequest = AllocateZeroPool (StrLen);\r
+    ASSERT (ConfigRequest != NULL);\r
+    UnicodeSPrint (\r
+               ConfigRequest, \r
+               StrLen, \r
+               L"%s&OFFSET=0&WIDTH=%04x", \r
+               Storage->BrowserStorage->ConfigHdr,\r
+               Storage->BrowserStorage->Size);\r
+  } else {\r
+    ConfigRequest = Storage->ConfigRequest;\r
+  }\r
+\r
   //\r
   // Request current settings from Configuration Driver\r
   //\r
@@ -4149,7 +4161,7 @@ LoadStorage (
   //\r
   SynchronizeStorage(FormSet, Storage->BrowserStorage, NULL, TRUE);\r
 \r
-  if (Storage->BrowserStorage->Type == EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER) {\r
+  if (Storage->BrowserStorage->Type != EFI_HII_VARSTORE_NAME_VALUE) {\r
     if (ConfigRequest != NULL) {\r
       FreePool (ConfigRequest);\r
     }\r
index 8fe9e98e63d0fd4952c8e2147413c85c76782d18..cfbe348d61ff2ec2c3be69eb34b472e647467e10 100644 (file)
@@ -1172,19 +1172,6 @@ IsNvUpdateRequiredForFormSet (
   IN FORM_BROWSER_FORMSET  *FormSet\r
   );\r
 \r
-/**\r
-  Check whether the storage data for current form set is changed.\r
-\r
-  @param  FormSet           FormSet data structure.\r
-\r
-  @retval TRUE              Data is changed.\r
-  @retval FALSE             Data is not changed.\r
-**/\r
-BOOLEAN \r
-IsStorageDataChangedForFormSet (\r
-  IN FORM_BROWSER_FORMSET             *FormSet\r
-  );\r
-\r
 /**\r
   Call the call back function for the question and process the return action.\r
 \r