EFI_STRING_ID *gLanguageToken;\r
UI_HII_DRIVER_INSTANCE *gHiiDriverList;\r
extern EFI_HII_HANDLE gStringPackHandle;\r
+UINT8 gCurrentLanguageIndex;\r
\r
\r
/**\r
GetNextLanguage (&LangCode, Lang);\r
\r
if (Index == Value->u8) {\r
+ gCurrentLanguageIndex = Value->u8;\r
break;\r
}\r
\r
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
{\r
CHAR8 *LangCode;\r
CHAR8 *Lang;\r
+ UINTN LangSize;\r
CHAR8 *CurrentLang;\r
UINTN OptionCount;\r
CHAR16 *StringBuffer;\r
}\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
EFI_IFR_NUMERIC_SIZE_1,\r
(UINT8) OptionCount\r
);\r
+ gCurrentLanguageIndex = (UINT8) OptionCount;\r
} else {\r
HiiCreateOneOfOptionOpCode (\r
OptionsOpCodeHandle,\r