]> code.delx.au - refind/blobdiff - refind/screen.c
Fixed bug that prevented launching Windows in Secure Boot mode;
[refind] / refind / screen.c
index 97a494666a54f74b3405aa4f0410caca190c6ee9..cd5c6983b0c0de23c502bf293b6a89f91ce153bb 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)
@@ -155,8 +162,8 @@ VOID BeginTextScreen(IN CHAR16 *Title)
 VOID FinishTextScreen(IN BOOLEAN WaitAlways)
 {
     if (haveError || WaitAlways) {
-        SwitchToText(FALSE);
-        PauseForKey();
+       PauseForKey();
+       SwitchToText(FALSE);
     }
 
     // reset error flag
@@ -622,10 +629,8 @@ BOOLEAN line_edit(CHAR16 *line_in, CHAR16 **line_out, UINTN x_max, UINTN y_pos)
       switch (key.UnicodeChar) {
       case CHAR_LINEFEED:
       case CHAR_CARRIAGE_RETURN:
-         if (StrCmp(line, line_in) != 0) {
-            *line_out = line;
-            line = NULL;
-         }
+         *line_out = line;
+         line = NULL;
          enter = TRUE;
          exit = TRUE;
          break;