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>
This commit is contained in:
Devin J. Pohly 2011-09-07 15:44:36 -04:00 committed by Anthony Liguori
parent 3b86b13ab0
commit df00bed0fa
2 changed files with 7 additions and 0 deletions

View File

@ -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 */

View File

@ -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))