diff --git a/libvirt.cpp b/libvirt.cpp index 6c3260c..0a14e5c 100644 --- a/libvirt.cpp +++ b/libvirt.cpp @@ -123,15 +123,15 @@ bool LibVirt::LaunchMachine(const char* XmlFileName, const char* BootDevice) xmlFreeDoc(xml); xmlXPathFreeContext(ctxt); - if (!PrepareSerialPort()) - { - return false; - } - vDom = virDomainDefineXML(vConn, buffer); xmlFree((xmlChar*)buffer); if (vDom) { + if (!PrepareSerialPort()) + { + return false; + } + if (virDomainCreate(vDom) != 0) { virDomainUndefine(vDom); diff --git a/virtualbox.cpp b/virtualbox.cpp index ef191f3..120fd22 100644 --- a/virtualbox.cpp +++ b/virtualbox.cpp @@ -32,6 +32,12 @@ void VirtualBox::InitializeDisk() bool VirtualBox::PrepareSerialPort() { + char vboxmanage_cmdline[300]; + + /* VirtualBox 5.x serial port output is unbearably slow by default, fix that! */ + sprintf(vboxmanage_cmdline, "VBoxManage setextradata %s VBoxInternal/Devices/serial/0/Config/YieldOnLSRRead 1", AppSettings.Name); + Execute(vboxmanage_cmdline); + return CreateLocalSocket(); }