From debd83adc8fbb089bcbc8a15e8b5ab4d50806332 Mon Sep 17 00:00:00 2001 From: vit9696 Date: Sun, 16 Feb 2020 02:52:53 +0300 Subject: [PATCH] OcConsoleLib: Use UIScale variable for HiDPI mode --- Include/Library/OcConfigurationLib.h | 1 - Include/Library/OcConsoleLib.h | 2 - .../OcAppleUserInterfaceThemeLib.c | 53 +++++++++---------- .../OcConfigurationLib/OcConfigurationLib.c | 1 - Library/OcConsoleLib/OcConsoleLib.c | 3 +- Library/OcConsoleLib/OcConsoleLibInternal.h | 2 +- Library/OcConsoleLib/TextOutputBuiltin.c | 20 ++++--- 7 files changed, 39 insertions(+), 43 deletions(-) diff --git a/Include/Library/OcConfigurationLib.h b/Include/Library/OcConfigurationLib.h index 21bdbce3..b9e55f37 100644 --- a/Include/Library/OcConfigurationLib.h +++ b/Include/Library/OcConfigurationLib.h @@ -482,7 +482,6 @@ OC_DECLARE (OC_UEFI_INPUT) _(OC_STRING , ConsoleMode , , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING)) \ _(OC_STRING , Resolution , , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING)) \ _(OC_STRING , TextRenderer , , OC_STRING_CONSTR ("", _, __), OC_DESTR (OC_STRING)) \ - _(UINT32 , Scale , , 100 , ()) \ _(BOOLEAN , IgnoreTextInGraphics , , FALSE , ()) \ _(BOOLEAN , ClearScreenOnModeSwitch , , FALSE , ()) \ _(BOOLEAN , ProvideConsoleGop , , FALSE , ()) \ diff --git a/Include/Library/OcConsoleLib.h b/Include/Library/OcConsoleLib.h index 37eca7c1..3903a072 100644 --- a/Include/Library/OcConsoleLib.h +++ b/Include/Library/OcConsoleLib.h @@ -31,7 +31,6 @@ typedef enum { Configure console control protocol with given options. @param[in] Renderer Renderer to use. - @param[in] Resolution Renderer resolution in percents. @param[in] IgnoreTextOutput Skip console output in text mode. @param[in] SanitiseClearScreen Workaround ClearScreen breaking resolution. @param[in] ClearScreenOnModeSwitch Clear graphic screen when switching to text mode. @@ -40,7 +39,6 @@ typedef enum { VOID OcSetupConsole ( IN OC_CONSOLE_RENDERER Renderer, - IN UINT32 Resolution, IN BOOLEAN IgnoreTextOutput, IN BOOLEAN SanitiseClearScreen, IN BOOLEAN ClearScreenOnModeSwitch, diff --git a/Library/OcAppleUserInterfaceThemeLib/OcAppleUserInterfaceThemeLib.c b/Library/OcAppleUserInterfaceThemeLib/OcAppleUserInterfaceThemeLib.c index 421bd702..6a4cdaf4 100644 --- a/Library/OcAppleUserInterfaceThemeLib/OcAppleUserInterfaceThemeLib.c +++ b/Library/OcAppleUserInterfaceThemeLib/OcAppleUserInterfaceThemeLib.c @@ -13,13 +13,15 @@ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ +#include #include #include #include #include +#include #include -STATIC UINT32 mCurrentColor = 0; +STATIC UINT32 mCurrentColor; STATIC EFI_STATUS @@ -41,24 +43,16 @@ STATIC EFI_USER_INTERFACE_THEME_PROTOCOL mAppleUserInterfaceThemeProtocol = { UserInterfaceThemeGetColor }; -/** - Install and initialise the Apple Image Conversion protocol. - - @param[in] Reinstall Replace any installed protocol. - - @returns Installed or located protocol. - @retval NULL There was an error locating or installing the protocol. -**/ EFI_USER_INTERFACE_THEME_PROTOCOL * OcAppleUserInterfaceThemeInstallProtocol ( IN BOOLEAN Reinstall ) { EFI_STATUS Status; - UINT32 Color = 0; - UINTN DataSize = 0; - EFI_USER_INTERFACE_THEME_PROTOCOL *EfiUiInterface = NULL; - EFI_HANDLE NewHandle = NULL; + UINT32 Color; + UINTN DataSize; + EFI_USER_INTERFACE_THEME_PROTOCOL *EfiUiInterface; + EFI_HANDLE NewHandle; if (Reinstall) { Status = UninstallAllProtocolInstances (&gEfiUserInterfaceThemeProtocolGuid); @@ -68,10 +62,10 @@ OcAppleUserInterfaceThemeInstallProtocol ( } } else { Status = gBS->LocateProtocol ( - &gEfiUserInterfaceThemeProtocolGuid, - NULL, - (VOID **)&EfiUiInterface - ); + &gEfiUserInterfaceThemeProtocolGuid, + NULL, + (VOID **) &EfiUiInterface + ); if (!EFI_ERROR (Status)) { return EfiUiInterface; } @@ -80,26 +74,27 @@ OcAppleUserInterfaceThemeInstallProtocol ( // // Default color is black // - mCurrentColor = 0x000000; + mCurrentColor = APPLE_COLOR_SYRAH_BLACK; DataSize = sizeof (Color); Status = gRT->GetVariable ( - L"DefaultBackgroundColor", - &gAppleVendorVariableGuid, - 0, - &DataSize, - &Color - ); + APPLE_DEFAULT_BACKGROUND_COLOR_VARIABLE_NAME, + &gAppleVendorVariableGuid, + 0, + &DataSize, + &Color + ); if (!EFI_ERROR (Status)) { mCurrentColor = Color; } + NewHandle = NULL; Status = gBS->InstallMultipleProtocolInterfaces ( - &NewHandle, - &gEfiUserInterfaceThemeProtocolGuid, - &mAppleUserInterfaceThemeProtocol, - NULL - ); + &NewHandle, + &gEfiUserInterfaceThemeProtocolGuid, + &mAppleUserInterfaceThemeProtocol, + NULL + ); if (EFI_ERROR (Status)) { return NULL; } diff --git a/Library/OcConfigurationLib/OcConfigurationLib.c b/Library/OcConfigurationLib/OcConfigurationLib.c index 3bddf74e..40d1c12b 100644 --- a/Library/OcConfigurationLib/OcConfigurationLib.c +++ b/Library/OcConfigurationLib/OcConfigurationLib.c @@ -568,7 +568,6 @@ mUefiOutputSchema[] = { OC_SCHEMA_BOOLEAN_IN ("ReplaceTabWithSpace", OC_GLOBAL_CONFIG, Uefi.Output.ReplaceTabWithSpace), OC_SCHEMA_STRING_IN ("Resolution", OC_GLOBAL_CONFIG, Uefi.Output.Resolution), OC_SCHEMA_BOOLEAN_IN ("SanitiseClearScreen", OC_GLOBAL_CONFIG, Uefi.Output.SanitiseClearScreen), - OC_SCHEMA_INTEGER_IN ("Scale", OC_GLOBAL_CONFIG, Uefi.Output.Scale), OC_SCHEMA_STRING_IN ("TextRenderer", OC_GLOBAL_CONFIG, Uefi.Output.TextRenderer), }; diff --git a/Library/OcConsoleLib/OcConsoleLib.c b/Library/OcConsoleLib/OcConsoleLib.c index 683532a6..3a927258 100644 --- a/Library/OcConsoleLib/OcConsoleLib.c +++ b/Library/OcConsoleLib/OcConsoleLib.c @@ -339,7 +339,6 @@ OcSetConsoleMode ( VOID OcSetupConsole ( IN OC_CONSOLE_RENDERER Renderer, - IN UINT32 Resolution, IN BOOLEAN IgnoreTextOutput, IN BOOLEAN SanitiseClearScreen, IN BOOLEAN ClearScreenOnModeSwitch, @@ -347,7 +346,7 @@ OcSetupConsole ( ) { if (Renderer == OcConsoleRendererBuiltinGraphics) { - OcUseBuiltinTextOutput (Resolution); + OcUseBuiltinTextOutput (); } else { OcUseSystemTextOutput ( Renderer, diff --git a/Library/OcConsoleLib/OcConsoleLibInternal.h b/Library/OcConsoleLib/OcConsoleLibInternal.h index f233f5a7..d05bb177 100644 --- a/Library/OcConsoleLib/OcConsoleLibInternal.h +++ b/Library/OcConsoleLib/OcConsoleLibInternal.h @@ -50,7 +50,7 @@ OcConsoleControlInstallProtocol ( VOID OcUseBuiltinTextOutput ( - IN UINT32 Resolution + VOID ); VOID diff --git a/Library/OcConsoleLib/TextOutputBuiltin.c b/Library/OcConsoleLib/TextOutputBuiltin.c index d3ed1081..703e5ac2 100644 --- a/Library/OcConsoleLib/TextOutputBuiltin.c +++ b/Library/OcConsoleLib/TextOutputBuiltin.c @@ -902,17 +902,23 @@ ConsoleControlInstall ( VOID OcUseBuiltinTextOutput ( - IN UINT32 Resolution + VOID ) { EFI_STATUS Status; + UINTN UiScaleSize; - // - // TODO: Support more scales. - // - if (Resolution == 200) { - mFontScale = 2; - } else { + UiScaleSize = sizeof (mFontScale); + + Status = gRT->GetVariable ( + APPLE_UI_SCALE_VARIABLE_NAME, + &gAppleVendorVariableGuid, + NULL, + &UiScaleSize, + (VOID *) &mFontScale + ); + + if (EFI_ERROR (Status) || mFontScale != 2) { mFontScale = 1; }