]> code.delx.au - refind/commitdiff
Modified "resolution" refind.conf token so it affects text mode as
authorsrs5694 <srs5694@users.sourceforge.net>
Tue, 4 Dec 2012 05:48:44 +0000 (00:48 -0500)
committersrs5694 <srs5694@users.sourceforge.net>
Tue, 4 Dec 2012 05:48:44 +0000 (00:48 -0500)
well as graphics mode.

NEWS.txt
refind/main.c
refind/screen.c

index 71e0a39df2180fa151b5589d0c48e7ddc47a5c60..60a94c16b29763128e6505ae94271205ab188111 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -1,6 +1,11 @@
 0.5.0 (??/??/2012):
 -------------------
 
+- Modified the "resolution" token so that it affects text mode as well
+  as graphics mode. On my systems, though, the actual text area is still
+  restricted to an 80x25 area. (This seems to be a firmware limitation; my
+  EFI shells are also so limited.)
+
 - Fixed a bug that caused the options line editor to blank out lines that
   were not actually edited.
 
index 5439188f9fea86f2bab3e32bf004a9298b26f1d3..ebb9fdd9e07b22f23e9dab53c0b63063019bd321 100644 (file)
@@ -118,7 +118,7 @@ static VOID AboutrEFInd(VOID)
 
     if (AboutMenu.EntryCount == 0) {
         AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT);
-        AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.4.7.8");
+        AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.4.7.9");
         AddMenuInfoLine(&AboutMenu, L"");
         AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer");
         AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012 Roderick W. Smith");
index ae90f200b315b676403f2485f325430bfcca9f22..9f0d48303444d17e52bc5a77bf094f81ba260dad 100644 (file)
@@ -107,6 +107,12 @@ VOID InitScreen(VOID)
 
 VOID SetupScreen(VOID)
 {
+    if ((GlobalConfig.RequestedScreenWidth > 0) && (GlobalConfig.RequestedScreenHeight > 0) &&
+        egSetScreenSize(GlobalConfig.RequestedScreenWidth, GlobalConfig.RequestedScreenHeight)) {
+          UGAWidth = GlobalConfig.RequestedScreenWidth;
+          UGAHeight = GlobalConfig.RequestedScreenHeight;
+    } // if user requested a particular screen resolution
+
     if (GlobalConfig.TextOnly) {
         // switch to text mode if requested
         AllowGraphicsMode = FALSE;
@@ -115,11 +121,6 @@ VOID SetupScreen(VOID)
     } else if (AllowGraphicsMode) {
         // clear screen and show banner
         // (now we know we'll stay in graphics mode)
-        if ((GlobalConfig.RequestedScreenWidth > 0) && (GlobalConfig.RequestedScreenHeight > 0) &&
-            egSetScreenSize(GlobalConfig.RequestedScreenWidth, GlobalConfig.RequestedScreenHeight)) {
-              UGAWidth = GlobalConfig.RequestedScreenWidth;
-              UGAHeight = GlobalConfig.RequestedScreenHeight;
-        } // if user requested a particular screen resolution
         SwitchToGraphics();
         BltClearScreen(TRUE);
     }
@@ -129,6 +130,12 @@ VOID SwitchToText(IN BOOLEAN CursorEnabled)
 {
     egSetGraphicsModeEnabled(FALSE);
     refit_call2_wrapper(ST->ConOut->EnableCursor, ST->ConOut, CursorEnabled);
+    // get size of text console
+    if (refit_call4_wrapper(ST->ConOut->QueryMode, ST->ConOut, ST->ConOut->Mode->Mode, &ConWidth, &ConHeight) != EFI_SUCCESS) {
+        // use default values on error
+        ConWidth = 80;
+        ConHeight = 25;
+    }
 }
 
 VOID SwitchToGraphics(VOID)