From: Wei Liu Date: Tue, 28 Jan 2014 15:38:01 +0000 Subject: xl: honor more top level vfb options Now that SDL and keymap options for VFB can also be specified in top level options. Documentation is also updated. This fixes bug #31 and further possible problems. Signed-off-by: Wei Liu Cc: Olaf Hering Cc: Ian Campbell Cc: Ian Jackson --- docs/man/xl.cfg.pod.5 | 4 ++-- tools/libxl/xl_cmdimpl.c | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5 index e15a49f..49a9250 100644 --- a/docs/man/xl.cfg.pod.5 +++ b/docs/man/xl.cfg.pod.5 @@ -389,8 +389,8 @@ This options does not control the emulated graphics card presented to an HVM guest. See L below for how to configure the emulated device. If L options are used in a PV guest configuration, xl will pick up B, B, -B, B and B to construct paravirtual -framebuffer device for the guest. +B, B, B, B, B and +B to construct paravirtual framebuffer device for the guest. Each B is a comma-separated list of C settings, from the following list: diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 4fc46eb..28212e2 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -721,6 +721,15 @@ static void parse_top_level_vnc_options(XLU_Config *config, xlu_cfg_get_defbool(config, "vncunused", &vnc->findunused, 0); } +static void parse_top_level_sdl_options(XLU_Config *config, + libxl_sdl_info *sdl) +{ + xlu_cfg_get_defbool(config, "sdl", &sdl->enable, 0); + xlu_cfg_get_defbool(config, "opengl", &sdl->opengl, 0); + xlu_cfg_replace_string (config, "display", &sdl->display, 0); + xlu_cfg_replace_string (config, "xauthority", &sdl->xauthority, 0); +} + static void parse_config_data(const char *config_source, const char *config_data, int config_len, @@ -1657,9 +1666,13 @@ skip_vfb: libxl_device_vkb_init); parse_top_level_vnc_options(config, &vfb->vnc); + parse_top_level_sdl_options(config, &vfb->sdl); + xlu_cfg_replace_string (config, "keymap", &vfb->keymap, 0); } - } else + } else { parse_top_level_vnc_options(config, &b_info->u.hvm.vnc); + parse_top_level_sdl_options(config, &b_info->u.hvm.sdl); + } if (c_info->type == LIBXL_DOMAIN_TYPE_HVM) { if (!xlu_cfg_get_string (config, "vga", &buf, 0)) { @@ -1676,8 +1689,6 @@ skip_vfb: LIBXL_VGA_INTERFACE_TYPE_CIRRUS; xlu_cfg_replace_string (config, "keymap", &b_info->u.hvm.keymap, 0); - xlu_cfg_get_defbool(config, "sdl", &b_info->u.hvm.sdl.enable, 0); - xlu_cfg_get_defbool(config, "opengl", &b_info->u.hvm.sdl.opengl, 0); xlu_cfg_get_defbool (config, "spice", &b_info->u.hvm.spice.enable, 0); if (!xlu_cfg_get_long (config, "spiceport", &l, 0)) b_info->u.hvm.spice.port = l;