@@ -565,7 +565,10 @@ async def send_monitor_layout(self, vm, layout=None, startup=False):
565565 if (
566566 vm .features .check_with_template ("no-monitor-layout" , False )
567567 or not vm .is_running ()
568- or getattr (vm , "is_preload" , False )
568+ or (
569+ getattr (vm , "is_preload" , False )
570+ and not vm .features .get ("preload-dispvm-early-gui" , None )
571+ )
569572 ):
570573 return
571574
@@ -611,12 +614,14 @@ def send_monitor_layout_all(self):
611614 or vm .klass == "AdminVM"
612615 or not vm .is_running ()
613616 or not vm .features .check_with_template ("gui" , True )
614- or getattr (vm , "is_preload" , False )
615617 ):
616618 continue
617- asyncio .ensure_future (
618- self .send_monitor_layout (vm , monitor_layout )
619- )
619+ if (
620+ getattr (vm , "is_preload" , False )
621+ and not vm .features .get ("preload-dispvm-early-gui" , None )
622+ ):
623+ continue
624+ asyncio .ensure_future (self .send_monitor_layout (vm , monitor_layout ))
620625
621626 @staticmethod
622627 def kde_guid_args (vm ):
@@ -724,7 +729,9 @@ async def start_gui_for_vm(self, vm, monitor_layout=None):
724729 :param monitor_layout: monitor layout to send; if None, fetch it from
725730 local X server.
726731 """
727- if getattr (vm , "is_preload" , False ):
732+ if getattr (vm , "is_preload" , False ) and not vm .features .get (
733+ "preload-dispvm-early-gui" , None
734+ ):
728735 return
729736 guid_cmd = self .common_guid_args (vm )
730737 guid_cmd .extend (["-d" , str (vm .xid )])
@@ -752,7 +759,9 @@ async def start_gui_for_stubdomain(self, vm, force=False):
752759
753760 This function is a coroutine.
754761 """
755- if getattr (vm , "is_preload" , False ):
762+ if getattr (vm , "is_preload" , False ) and not vm .features .get (
763+ "preload-dispvm-early-gui" , None
764+ ):
756765 return
757766 want_stubdom = force
758767 if not want_stubdom and vm .features .check_with_template (
@@ -785,7 +794,9 @@ async def start_audio_for_vm(self, vm):
785794
786795 :param vm: VM for which start AUDIO daemon
787796 """
788- if getattr (vm , "is_preload" , False ):
797+ if getattr (vm , "is_preload" , False ) and not vm .features .get (
798+ "preload-dispvm-early-gui" , None
799+ ):
789800 return
790801 pacat_cmd = [
791802 PACAT_DAEMON_PATH ,
@@ -807,7 +818,9 @@ async def start_gui(self, vm, force_stubdom=False, monitor_layout=None):
807818 one for target AppVM is running.
808819 :param monitor_layout: monitor layout configuration
809820 """
810- if getattr (vm , "is_preload" , False ):
821+ if getattr (vm , "is_preload" , False ) and not vm .features .get (
822+ "preload-dispvm-early-gui" , None
823+ ):
811824 return
812825 guivm = getattr (vm , "guivm" , None )
813826 if guivm != vm .app .local_name :
@@ -830,7 +843,9 @@ async def start_audio(self, vm):
830843
831844 :param vm: VM for which AUDIO daemon should be started
832845 """
833- if getattr (vm , "is_preload" , False ):
846+ if getattr (vm , "is_preload" , False ) and not vm .features .get (
847+ "preload-dispvm-early-gui" , None
848+ ):
834849 return
835850 audiovm = getattr (vm , "audiovm" , None )
836851 if audiovm != vm .app .local_name :
@@ -849,7 +864,10 @@ async def start_audio(self, vm):
849864 def on_domain_spawn (self , vm , _event , ** kwargs ):
850865 """Handler of 'domain-spawn' event, starts GUI daemon for stubdomain"""
851866
852- if not self .is_watched (vm ) or getattr (vm , "is_preload" , False ):
867+ if not self .is_watched (vm ) or (
868+ getattr (vm , "is_preload" , False )
869+ and not vm .features .get ("preload-dispvm-early-gui" , None )
870+ ):
853871 return
854872
855873 try :
@@ -874,7 +892,10 @@ def on_domain_start(self, vm, _event, **kwargs):
874892 """Handler of 'domain-start' event, starts GUI/AUDIO daemon for
875893 actual VM"""
876894
877- if not self .is_watched (vm ) or getattr (vm , "is_preload" , False ):
895+ if not self .is_watched (vm ) or (
896+ getattr (vm , "is_preload" , False )
897+ and not vm .features .get ("preload-dispvm-early-gui" , None )
898+ ):
878899 return
879900
880901 self .xid_cache [vm .name ] = vm .xid , vm .stubdom_xid
@@ -911,7 +932,12 @@ def on_connection_established(self, _subject, _event, **_kwargs):
911932 if (
912933 vm .klass == "AdminVM"
913934 or not self .is_watched (vm )
914- or getattr (vm , "is_preload" , False )
935+ or (
936+ getattr (vm , "is_preload" , False )
937+ and not vm .features .get (
938+ "preload-dispvm-early-gui" , None
939+ )
940+ )
915941 ):
916942 continue
917943
@@ -960,7 +986,10 @@ def on_property_preload_set(self, vm, _event, **_kwargs):
960986 if (
961987 not vm .klass == "DispVM"
962988 or not self .is_watched (vm )
963- or getattr (vm , "is_preload" , False )
989+ or (
990+ getattr (vm , "is_preload" , False )
991+ and not vm .features .get ("preload-dispvm-early-gui" , None )
992+ )
964993 or not vm .is_running ()
965994 ):
966995 return
0 commit comments