diff options
author | Hitoshi Mitake <h.mitake@gmail.com> | 2012-09-15 01:15:41 +0900 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@gmail.com> | 2012-09-23 07:11:28 +0100 |
commit | 995ee2bf469de6bbe5ce133ec853392b2a4ce34c (patch) | |
tree | b52719e4af7b29724889cba00ce1d5ff3d8bce63 | |
parent | d8f8a860f2403533fc73f541122c65a34b21e42f (diff) | |
download | qemu-995ee2bf469de6bbe5ce133ec853392b2a4ce34c.tar.gz qemu-995ee2bf469de6bbe5ce133ec853392b2a4ce34c.tar.bz2 qemu-995ee2bf469de6bbe5ce133ec853392b2a4ce34c.zip |
curses: don't initialize curses when qemu is daemonized
Current qemu initializes curses even if -daemonize option is
passed. This cause problem because shell prompt appears without
calling endwin().
This patch adds new function, is_daemonized(), to OS dependent
code. With this function, curses_display_init() can check that qemu is
daemonized or not. If daemonized, curses_display_init() isn't called
and the problem is avoided.
Of course, -daemonize && -curses doesn't make sense. Users shouldn't
pass the arguments at the same time. But the problem is very painful
because Ctrl-C cannot be delivered to the terminal.
Cc: Andrzej Zaborowski <balrog@zabor.org>
Cc: Stefan Hajnoczi <stefanha@gmail.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>
Cc: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Hitoshi Mitake <h.mitake@gmail.com>
Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
-rw-r--r-- | os-posix.c | 5 | ||||
-rw-r--r-- | qemu-os-posix.h | 2 | ||||
-rw-r--r-- | qemu-os-win32.h | 5 | ||||
-rw-r--r-- | vl.c | 4 |
4 files changed, 15 insertions, 1 deletions
diff --git a/os-posix.c b/os-posix.c index 79fa2288e4..eabccb8fe0 100644 --- a/os-posix.c +++ b/os-posix.c @@ -360,3 +360,8 @@ int qemu_create_pidfile(const char *filename) /* keep pidfile open & locked forever */ return 0; } + +bool is_daemonized(void) +{ + return daemonize; +} diff --git a/qemu-os-posix.h b/qemu-os-posix.h index 8e1149d964..7f198e475c 100644 --- a/qemu-os-posix.h +++ b/qemu-os-posix.h @@ -46,4 +46,6 @@ typedef struct timeval qemu_timeval; typedef struct timespec qemu_timespec; int qemu_utimens(const char *path, const qemu_timespec *times); +bool is_daemonized(void); + #endif diff --git a/qemu-os-win32.h b/qemu-os-win32.h index 753679b194..b3e451b719 100644 --- a/qemu-os-win32.h +++ b/qemu-os-win32.h @@ -86,4 +86,9 @@ typedef struct { } qemu_timeval; int qemu_gettimeofday(qemu_timeval *tp); +static inline bool is_daemonized(void) +{ + return false; +} + #endif @@ -3657,7 +3657,9 @@ int main(int argc, char **argv, char **envp) break; #if defined(CONFIG_CURSES) case DT_CURSES: - curses_display_init(ds, full_screen); + if (!is_daemonized()) { + curses_display_init(ds, full_screen); + } break; #endif #if defined(CONFIG_SDL) |