diff options
author | malc | 2011-07-22 22:50:37 +0200 |
---|---|---|
committer | malc | 2011-07-22 22:50:37 +0200 |
commit | 670acc9bf21474b2a4456a3cd13323e48e35820d (patch) | |
tree | 81a794b007c8b94dacf593ef8e5eaea6e90dcdc0 /hw/xenfb.c | |
parent | TCG/PPC: use stack for TCG temps (diff) | |
parent | guest-agent: fix build with OpenBSD (diff) | |
download | qemu-670acc9bf21474b2a4456a3cd13323e48e35820d.tar.gz qemu-670acc9bf21474b2a4456a3cd13323e48e35820d.tar.xz qemu-670acc9bf21474b2a4456a3cd13323e48e35820d.zip |
Merge branch 'master' of git://git.qemu.org/qemu
Diffstat (limited to 'hw/xenfb.c')
-rw-r--r-- | hw/xenfb.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/hw/xenfb.c b/hw/xenfb.c index 1db75fbe49..0a01ae30cc 100644 --- a/hw/xenfb.c +++ b/hw/xenfb.c @@ -347,13 +347,6 @@ static void xenfb_mouse_event(void *opaque, static int input_init(struct XenDevice *xendev) { - struct XenInput *in = container_of(xendev, struct XenInput, c.xendev); - - if (!in->c.ds) { - xen_be_printf(xendev, 1, "ds not set (yet)\n"); - return -1; - } - xenstore_write_be_int(xendev, "feature-abs-pointer", 1); return 0; } @@ -367,6 +360,18 @@ static int input_connect(struct XenDevice *xendev) &in->abs_pointer_wanted) == -1) in->abs_pointer_wanted = 0; + if (!in->c.ds) { + char *vfb = xenstore_read_str(NULL, "device/vfb"); + if (vfb == NULL) { + /* there is no vfb, run vkbd on its own */ + in->c.ds = get_displaystate(); + } else { + qemu_free(vfb); + xen_be_printf(xendev, 1, "ds not set (yet)\n"); + return -1; + } + } + rc = common_bind(&in->c); if (rc != 0) return rc; |