]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2010-02-14 Vladimir Serbinenko <phcoder@gmail.com>
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 14 Feb 2010 13:52:10 +0000 (14:52 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 14 Feb 2010 13:52:10 +0000 (14:52 +0100)
* term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Wait for possible
escape sequence after \e.

ChangeLog
term/ieee1275/ofconsole.c

index a75dd8636b4f38f167148ea9070271261ec8d5f8..8d654ce8812afeac4b5b122b0fe4595a0844e948 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-02-14  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Wait for possible
+       escape sequence after \e.
+
 2010-02-14  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * term/ieee1275/ofconsole.c (grub_ofconsole_putchar): Don't output
index 86b150a33282217cb37f9895f74da584361a8408..82108022a219da3c620d78393a22166ce41b8ce5 100644 (file)
@@ -21,6 +21,7 @@
 #include <grub/types.h>
 #include <grub/misc.h>
 #include <grub/mm.h>
+#include <grub/time.h>
 #include <grub/machine/console.h>
 #include <grub/ieee1275/ieee1275.h>
 
@@ -203,7 +204,14 @@ grub_ofconsole_readkey (int *key)
 
   if (actual > 0 && c == '\e')
     {
+      grub_uint64_t start;
       grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
+
+      /* On 9600 we have to wait up to 12 milliseconds.  */
+      start = grub_get_time_ms ();
+      while (actual <= 0 && grub_get_time_ms () - start < 12)
+       grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
+
       if (actual <= 0)
        {
          *key = '\e';
@@ -214,6 +222,10 @@ grub_ofconsole_readkey (int *key)
        return 0;
 
       grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
+      /* On 9600 we have to wait up to 12 milliseconds.  */
+      start = grub_get_time_ms ();
+      while (actual <= 0 && grub_get_time_ms () - start < 12)
+       grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
       if (actual <= 0)
        return 0;