|
@@ -2500,13 +2500,11 @@ static void vc_chr_set_echo(Chardev *chr, bool echo)
|
|
drv->console->echo = echo;
|
|
drv->console->echo = echo;
|
|
}
|
|
}
|
|
|
|
|
|
-static void text_console_update_cursor(void *opaque)
|
|
|
|
|
|
+int qemu_invalidate_text_consoles(void)
|
|
{
|
|
{
|
|
QemuConsole *s;
|
|
QemuConsole *s;
|
|
int count = 0;
|
|
int count = 0;
|
|
|
|
|
|
- cursor_visible_phase = !cursor_visible_phase;
|
|
|
|
-
|
|
|
|
QTAILQ_FOREACH(s, &consoles, next) {
|
|
QTAILQ_FOREACH(s, &consoles, next) {
|
|
if (qemu_console_is_graphic(s) ||
|
|
if (qemu_console_is_graphic(s) ||
|
|
!qemu_console_is_visible(s)) {
|
|
!qemu_console_is_visible(s)) {
|
|
@@ -2516,7 +2514,14 @@ static void text_console_update_cursor(void *opaque)
|
|
graphic_hw_invalidate(s);
|
|
graphic_hw_invalidate(s);
|
|
}
|
|
}
|
|
|
|
|
|
- if (count) {
|
|
|
|
|
|
+ return count;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void text_console_update_cursor(void *opaque)
|
|
|
|
+{
|
|
|
|
+ cursor_visible_phase = !cursor_visible_phase;
|
|
|
|
+
|
|
|
|
+ if (qemu_invalidate_text_consoles()) {
|
|
timer_mod(cursor_timer,
|
|
timer_mod(cursor_timer,
|
|
qemu_clock_get_ms(QEMU_CLOCK_REALTIME) + CONSOLE_CURSOR_PERIOD / 2);
|
|
qemu_clock_get_ms(QEMU_CLOCK_REALTIME) + CONSOLE_CURSOR_PERIOD / 2);
|
|
}
|
|
}
|