tools/qvm-start-gui: avoid starting a VM just to send it monitor layout
If the VM is powered off shortly after startup, it may happen that qubes.SetMonitorLayout would start it again. Avoid this by using autostart=False argument to run_service() function. Note that there is a vm.is_running() check at the beginning of the function already, but if it happens while the VM is cleaned up, it may still report that it's running, but at the time of run_service() call it is not.
This commit is contained in:
parent
98260ff148
commit
e8c48ff7c8
@ -511,7 +511,7 @@ HDMI1 connected 2560x1920+0+0 (normal left inverted right x axis y axis) 206mm x
|
||||
loop.run_until_complete(self.launcher.send_monitor_layout(
|
||||
vm, layout=monitor_layout, startup=True))
|
||||
mock_run_service.assert_called_once_with(
|
||||
'qubes.SetMonitorLayout', b'1920 1080 0 0\n')
|
||||
'qubes.SetMonitorLayout', autostart=False, input=b'1920 1080 0 0\n')
|
||||
self.assertAllCalled()
|
||||
|
||||
def test_061_send_monitor_layout_exclude(self):
|
||||
|
@ -25,6 +25,8 @@ import signal
|
||||
import subprocess
|
||||
import asyncio
|
||||
import re
|
||||
|
||||
import functools
|
||||
import xcffib
|
||||
import xcffib.xproto # pylint: disable=unused-import
|
||||
|
||||
@ -292,8 +294,10 @@ class GUILauncher(object):
|
||||
|
||||
try:
|
||||
yield from asyncio.get_event_loop().run_in_executor(None,
|
||||
vm.run_service_for_stdio, 'qubes.SetMonitorLayout',
|
||||
''.join(layout).encode())
|
||||
functools.partial(vm.run_service_for_stdio,
|
||||
'qubes.SetMonitorLayout',
|
||||
input=''.join(layout).encode(),
|
||||
autostart=False))
|
||||
except subprocess.CalledProcessError as e:
|
||||
vm.log.warning('Failed to send monitor layout: %s', e.stderr)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user