Message ID | 20190923220658.27007-1-laurent@vivier.eu |
---|---|
State | New |
Headers | show |
Series | ui: fix keymap file search in input-barrier object | expand |
On Tue, Sep 24, 2019 at 12:06:58AM +0200, Laurent Vivier wrote: > If we try to start QEMU with "-k en-us", qemu prints a message and exits > with: > > qemu-system-i386: could not read keymap file: 'en-us' > > It's because this function is called way too early, before > qemu_add_data_dir() is called, and so qemu_find_file() fails. > > To fix that, move init_keyboard_layout() from the class init function to the > instance init function. > > Reported-by: Anthony PERARD <anthony.perard@citrix.com> > Fixes: 6105683da35b ("ui: add an embedded Barrier client") > Signed-off-by: Laurent Vivier <laurent@vivier.eu> Thanks! With the patch apply, I can start QEMU (with -k). And the patch looks fine. Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
Ping? Le 24/09/2019 à 00:06, Laurent Vivier a écrit : > If we try to start QEMU with "-k en-us", qemu prints a message and exits > with: > > qemu-system-i386: could not read keymap file: 'en-us' > > It's because this function is called way too early, before > qemu_add_data_dir() is called, and so qemu_find_file() fails. > > To fix that, move init_keyboard_layout() from the class init function to the > instance init function. > > Reported-by: Anthony PERARD <anthony.perard@citrix.com> > Fixes: 6105683da35b ("ui: add an embedded Barrier client") > Signed-off-by: Laurent Vivier <laurent@vivier.eu> > --- > ui/input-barrier.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/ui/input-barrier.c b/ui/input-barrier.c > index a2c961f285a4..fe35049b83a2 100644 > --- a/ui/input-barrier.c > +++ b/ui/input-barrier.c > @@ -682,6 +682,13 @@ static void input_barrier_instance_init(Object *obj) > { > InputBarrier *ib = INPUT_BARRIER(obj); > > + /* always use generic keymaps */ > + if (keyboard_layout && !kbd_layout) { > + /* We use X11 key id, so use VNC name2keysym */ > + kbd_layout = init_keyboard_layout(name2keysym, keyboard_layout, > + &error_fatal); > + } > + > ib->saddr.type = SOCKET_ADDRESS_TYPE_INET; > ib->saddr.u.inet.host = g_strdup("localhost"); > ib->saddr.u.inet.port = g_strdup("24800"); > @@ -719,13 +726,6 @@ static void input_barrier_class_init(ObjectClass *oc, void *data) > UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); > > ucc->complete = input_barrier_complete; > - > - /* always use generic keymaps */ > - if (keyboard_layout) { > - /* We use X11 key id, so use VNC name2keysym */ > - kbd_layout = init_keyboard_layout(name2keysym, keyboard_layout, > - &error_fatal); > - } > } > > static const TypeInfo input_barrier_info = { >
diff --git a/ui/input-barrier.c b/ui/input-barrier.c index a2c961f285a4..fe35049b83a2 100644 --- a/ui/input-barrier.c +++ b/ui/input-barrier.c @@ -682,6 +682,13 @@ static void input_barrier_instance_init(Object *obj) { InputBarrier *ib = INPUT_BARRIER(obj); + /* always use generic keymaps */ + if (keyboard_layout && !kbd_layout) { + /* We use X11 key id, so use VNC name2keysym */ + kbd_layout = init_keyboard_layout(name2keysym, keyboard_layout, + &error_fatal); + } + ib->saddr.type = SOCKET_ADDRESS_TYPE_INET; ib->saddr.u.inet.host = g_strdup("localhost"); ib->saddr.u.inet.port = g_strdup("24800"); @@ -719,13 +726,6 @@ static void input_barrier_class_init(ObjectClass *oc, void *data) UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc); ucc->complete = input_barrier_complete; - - /* always use generic keymaps */ - if (keyboard_layout) { - /* We use X11 key id, so use VNC name2keysym */ - kbd_layout = init_keyboard_layout(name2keysym, keyboard_layout, - &error_fatal); - } } static const TypeInfo input_barrier_info = {
If we try to start QEMU with "-k en-us", qemu prints a message and exits with: qemu-system-i386: could not read keymap file: 'en-us' It's because this function is called way too early, before qemu_add_data_dir() is called, and so qemu_find_file() fails. To fix that, move init_keyboard_layout() from the class init function to the instance init function. Reported-by: Anthony PERARD <anthony.perard@citrix.com> Fixes: 6105683da35b ("ui: add an embedded Barrier client") Signed-off-by: Laurent Vivier <laurent@vivier.eu> --- ui/input-barrier.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)