summaryrefslogtreecommitdiffstats
path: root/ui/input.c
diff options
context:
space:
mode:
authorPavel Dovgalyuk2018-09-12 10:20:13 +0200
committerPaolo Bonzini2018-10-02 19:08:59 +0200
commit9888091404a702d7ec79d51b088d994b9fc121bd (patch)
tree22bf90b8d1d4c876c160a371451060f3861e37df /ui/input.c
parentslirp: fix ipv6 timers (diff)
downloadqemu-9888091404a702d7ec79d51b088d994b9fc121bd.tar.gz
qemu-9888091404a702d7ec79d51b088d994b9fc121bd.tar.xz
qemu-9888091404a702d7ec79d51b088d994b9fc121bd.zip
ui: fix virtual timers
UI uses timers based on virtual clock for managing key queue. This is incorrect because this service is not related to the guest state, and its events should not be recorded and replayed. But these timers should stop when the guest is not executing. This patch changes using virtual clock to the new virtual_ext clock, which runs as virtual clock, but its timers are not saved to the log. Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru> Message-Id: <20180912082013.3228.33664.stgit@pasha-VirtualBox> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'ui/input.c')
-rw-r--r--ui/input.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/ui/input.c b/ui/input.c
index 51b1019252..dd7f6d7f21 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -271,7 +271,7 @@ static void qemu_input_queue_process(void *opaque)
item = QTAILQ_FIRST(queue);
switch (item->type) {
case QEMU_INPUT_QUEUE_DELAY:
- timer_mod(item->timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL)
+ timer_mod(item->timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL_EXT)
+ item->delay_ms);
return;
case QEMU_INPUT_QUEUE_EVENT:
@@ -301,7 +301,7 @@ static void qemu_input_queue_delay(struct QemuInputEventQueueHead *queue,
queue_count++;
if (start_timer) {
- timer_mod(item->timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL)
+ timer_mod(item->timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL_EXT)
+ item->delay_ms);
}
}
@@ -448,8 +448,8 @@ void qemu_input_event_send_key_delay(uint32_t delay_ms)
}
if (!kbd_timer) {
- kbd_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL, qemu_input_queue_process,
- &kbd_queue);
+ kbd_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL_EXT,
+ qemu_input_queue_process, &kbd_queue);
}
if (queue_count < queue_limit) {
qemu_input_queue_delay(&kbd_queue, kbd_timer,