aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevin J. Pohly <djpohly+launchpad@gmail.com>2011-09-07 15:44:36 -0400
committerAnthony Liguori <aliguori@us.ibm.com>2011-09-09 12:58:16 -0500
commitdf00bed0fa30a6f5712456e7add783e470c534c9 (patch)
tree059a74bafa5d495988647ba3b4ef36d2b0bed684
parent3b86b13ab07407fc8c6ac0efbd717fe51df1cad7 (diff)
curses: fix garbling when chtype != long
Qemu currently assumes that chtype is typedef'd to unsigned long, but this is not necessarily the case (ncurses, for instance, can configure this at build-time). This patch uses the predefined chtype if qemu is configured for curses support and falls back to unsigned long otherwise. Fixes bug 568614. Signed-off-by: Devin J. Pohly <djpohly+launchpad@gmail.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--console.c2
-rw-r--r--console.h5
2 files changed, 7 insertions, 0 deletions
diff --git a/console.c b/console.c
index 500b3fbc77..5c7a93b655 100644
--- a/console.c
+++ b/console.c
@@ -343,6 +343,7 @@ static const uint32_t dmask4[4] = {
static uint32_t color_table[2][8];
+#ifndef CONFIG_CURSES
enum color_names {
COLOR_BLACK = 0,
COLOR_RED = 1,
@@ -353,6 +354,7 @@ enum color_names {
COLOR_CYAN = 6,
COLOR_WHITE = 7
};
+#endif
static const uint32_t color_table_rgb[2][8] = {
{ /* dark */
diff --git a/console.h b/console.h
index 67d137384e..9c1487e041 100644
--- a/console.h
+++ b/console.h
@@ -328,7 +328,12 @@ static inline int ds_get_bytes_per_pixel(DisplayState *ds)
return ds->surface->pf.bytes_per_pixel;
}
+#ifdef CONFIG_CURSES
+#include <curses.h>
+typedef chtype console_ch_t;
+#else
typedef unsigned long console_ch_t;
+#endif
static inline void console_write_ch(console_ch_t *dest, uint32_t ch)
{
if (!(ch & 0xff))