[PATCH 1/9] libxl: add tablet/mouse input device support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Marek Marczykowski <marmarek@xxxxxxxxxxxxxxxxxxxxxx>

Signed-off-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
---
 src/libxl/libxl_conf.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

Changes in v2:
 - rebase on 1.2.12+
 - multiple devices support
Changes in v3:
 - reduce code duplication

diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 2321660..50ef9d8 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -749,6 +749,50 @@ libxlMakeDomBuildInfo(virDomainDefPtr def,
         libxl_defbool_set(&b_info->u.hvm.vnc.enable, 0);
         libxl_defbool_set(&b_info->u.hvm.sdl.enable, 0);
 
+        if (def->ninputs) {
+            for (i = 0; i < def->ninputs; i++) {
+                if (def->inputs[i]->bus != VIR_DOMAIN_INPUT_BUS_USB) {
+                    virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                            _("libxenlight supports only USB input"));
+                    return -1;
+                }
+            }
+#ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST
+            if (VIR_ALLOC_N(b_info->u.hvm.usbdevice_list, def->ninputs+1) < 0)
+                return -1;
+#else
+            if (def->ninputs > 1) {
+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                        _("libxenlight supports only one input device"));
+                return -1;
+            }
+#endif
+            for (i = 0; i < def->ninputs; i++) {
+                char **usbdevice;
+#ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST
+                usbdevice = &b_info->u.hvm.usbdevice_list[i];
+#else
+                usbdevice = &b_info->u.hvm.usbdevice;
+#endif
+                switch (def->inputs[i]->type) {
+                    case VIR_DOMAIN_INPUT_TYPE_MOUSE:
+                        VIR_FREE(*usbdevice);
+                        if (VIR_STRDUP(*usbdevice, "mouse") < 0)
+                            return -1;
+                        break;
+                    case VIR_DOMAIN_INPUT_TYPE_TABLET:
+                        VIR_FREE(*usbdevice);
+                        if (VIR_STRDUP(*usbdevice, "tablet") < 0)
+                            return -1;
+                        break;
+                    default:
+                        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                                _("Unknown input device type"));
+                        return -1;
+                }
+            }
+        }
+
         /*
          * The following comment and calculation were taken directly from
          * libxenlight's internal function libxl_get_required_shadow_memory():
-- 
2.1.0

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]