]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
IntelFsp2Pkg: Only include required header files in FspEas.h
[mirror_edk2.git] / MdeModulePkg / Application / UiApp / FrontPageCustomizedUiSupport.c
index dc5d1c6c409bd5ce0905fe6c3f1fdb7f54389b09..93f6e4e88feff456f98d6a5f0b9a1395bddd7532 100644 (file)
@@ -56,6 +56,7 @@ CHAR8                        *gLanguageString;
 EFI_STRING_ID                *gLanguageToken;\r
 UI_HII_DRIVER_INSTANCE       *gHiiDriverList;\r
 extern EFI_HII_HANDLE        gStringPackHandle;\r
+UINT8                        gCurrentLanguageIndex;\r
 \r
 \r
 /**\r
@@ -130,6 +131,7 @@ LanguageChangeHandler (
     GetNextLanguage (&LangCode, Lang);\r
 \r
     if (Index == Value->u8) {\r
+      gCurrentLanguageIndex = Value->u8;\r
       break;\r
     }\r
 \r
@@ -190,6 +192,16 @@ UiSupportLibCallbackHandler (
     return FALSE;\r
   }\r
 \r
+  if (Action == EFI_BROWSER_ACTION_RETRIEVE) {\r
+    if (QuestionId == FRONT_PAGE_KEY_LANGUAGE) {\r
+      Value->u8 = gCurrentLanguageIndex;\r
+      *Status = EFI_SUCCESS;\r
+    } else {\r
+      *Status = EFI_UNSUPPORTED;\r
+    }\r
+    return TRUE;\r
+  }\r
+\r
   if (Action != EFI_BROWSER_ACTION_CHANGED) {\r
     //\r
     // Do nothing for other UEFI Action. Only do call back when data is changed.\r
@@ -247,6 +259,7 @@ UiCreateLanguageMenu (
 {\r
   CHAR8                       *LangCode;\r
   CHAR8                       *Lang;\r
+  UINTN                       LangSize;\r
   CHAR8                       *CurrentLang;\r
   UINTN                       OptionCount;\r
   CHAR16                      *StringBuffer;\r
@@ -316,9 +329,10 @@ UiCreateLanguageMenu (
       }\r
 \r
       if (EFI_ERROR (Status)) {\r
-        StringBuffer = AllocatePool (AsciiStrSize (Lang) * sizeof (CHAR16));\r
+        LangSize = AsciiStrSize (Lang);\r
+        StringBuffer = AllocatePool (LangSize * sizeof (CHAR16));\r
         ASSERT (StringBuffer != NULL);\r
-        AsciiStrToUnicodeStr (Lang, StringBuffer);\r
+        AsciiStrToUnicodeStrS (Lang, StringBuffer, LangSize);\r
       }\r
 \r
       ASSERT (StringBuffer != NULL);\r
@@ -347,6 +361,7 @@ UiCreateLanguageMenu (
         EFI_IFR_NUMERIC_SIZE_1,\r
         (UINT8) OptionCount\r
         );\r
+      gCurrentLanguageIndex = (UINT8) OptionCount;\r
     } else {\r
       HiiCreateOneOfOptionOpCode (\r
         OptionsOpCodeHandle,\r