]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/SetupBrowser: Send discard info to driver when fail to submit
authorDandan Bi <dandan.bi@intel.com>
Tue, 6 Sep 2016 10:14:58 +0000 (18:14 +0800)
committerStar Zeng <star.zeng@intel.com>
Wed, 19 Oct 2016 03:37:10 +0000 (11:37 +0800)
When fail to submit data and user discard the change, we should send
the discard info to driver with EFI_BROWSER_ACTION_CHANGED callback.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
MdeModulePkg/Universal/SetupBrowserDxe/Setup.c

index 2aded895afc5023324aeb891275eeaf653ab7a1e..754781457501e0f6577a4f8469fa21caf02d838a 100644 (file)
@@ -3275,6 +3275,7 @@ SubmitForForm (
 \r
         Status = EFI_SUCCESS;\r
       }\r
+      SendDiscardInfoToDriver (FormSet,Form);\r
     } else {\r
       Status = EFI_UNSUPPORTED;\r
     }\r
@@ -3336,9 +3337,11 @@ SubmitForFormSet (
   BOOLEAN                 HasInserted;\r
   FORM_BROWSER_STATEMENT  *Question;\r
   BOOLEAN                 SubmitFormSetFail;\r
+  BOOLEAN                 DiscardChange;\r
 \r
   HasInserted = FALSE;\r
   SubmitFormSetFail = FALSE;\r
+  DiscardChange     = FALSE;\r
 \r
   if (!IsNvUpdateRequiredForFormSet (FormSet)) {\r
     return EFI_SUCCESS;\r
@@ -3439,6 +3442,7 @@ SubmitForFormSet (
       // If not in system level, just handl the save failed storage here.\r
       //\r
       if (ConfirmSaveFail (Form->FormTitle, FormSet->HiiHandle) == BROWSER_ACTION_DISCARD) {\r
+        DiscardChange = TRUE;\r
         Link = GetFirstNode (&FormSet->SaveFailStorageListHead);\r
         while (!IsNull (&FormSet->SaveFailStorageListHead, Link)) {\r
           FormSetStorage = FORMSET_STORAGE_FROM_SAVE_FAIL_LINK (Link);\r
@@ -3487,6 +3491,21 @@ SubmitForFormSet (
     }\r
   }\r
 \r
+  //\r
+  // If user discard the change, send the discard info to driver.\r
+  //\r
+  if (DiscardChange) {\r
+    Link = GetFirstNode (&FormSet->FormListHead);\r
+    while (!IsNull (&FormSet->FormListHead, Link)) {\r
+      Form = FORM_BROWSER_FORM_FROM_LINK (Link);\r
+      Link = GetNextNode (&FormSet->FormListHead, Link);\r
+      //\r
+      // Call callback with Changed type to inform the driver.\r
+      //\r
+      SendDiscardInfoToDriver (FormSet, Form);\r
+    }\r
+  }\r
+\r
   //\r
   // 5. Update the NV flag.\r
   // \r
@@ -3606,6 +3625,16 @@ SubmitForSystem (
         }\r
       }\r
 \r
+      Link = GetFirstNode (&LocalFormSet->FormListHead);\r
+      while (!IsNull (&LocalFormSet->FormListHead, Link)) {\r
+        Form = FORM_BROWSER_FORM_FROM_LINK (Link);\r
+        Link = GetNextNode (&LocalFormSet->FormListHead, Link);\r
+        //\r
+        // Call callback with Changed type to inform the driver.\r
+        //\r
+        SendDiscardInfoToDriver (LocalFormSet, Form);\r
+      }\r
+\r
       if (!IsHiiHandleInBrowserContext (LocalFormSet->HiiHandle)) {\r
         CleanBrowserStorage(LocalFormSet);\r
         RemoveEntryList (&LocalFormSet->Link);\r