+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
#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>
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';
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;