@@ -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,13 @@ 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 )
617+ or (
618+ getattr (vm , "is_preload" , False )
619+ and not vm .features .get ("preload-dispvm-early-gui" , None )
620+ )
615621 ):
616622 continue
617- asyncio .ensure_future (
618- self .send_monitor_layout (vm , monitor_layout )
619- )
623+ asyncio .ensure_future (self .send_monitor_layout (vm , monitor_layout ))
620624
621625 @staticmethod
622626 def kde_guid_args (vm ):
@@ -724,7 +728,9 @@ async def start_gui_for_vm(self, vm, monitor_layout=None):
724728 :param monitor_layout: monitor layout to send; if None, fetch it from
725729 local X server.
726730 """
727- if getattr (vm , "is_preload" , False ):
731+ if getattr (vm , "is_preload" , False ) and not vm .features .get (
732+ "preload-dispvm-early-gui" , None
733+ ):
728734 return
729735 guid_cmd = self .common_guid_args (vm )
730736 guid_cmd .extend (["-d" , str (vm .xid )])
@@ -752,7 +758,9 @@ async def start_gui_for_stubdomain(self, vm, force=False):
752758
753759 This function is a coroutine.
754760 """
755- if getattr (vm , "is_preload" , False ):
761+ if getattr (vm , "is_preload" , False ) and not vm .features .get (
762+ "preload-dispvm-early-gui" , None
763+ ):
756764 return
757765 want_stubdom = force
758766 if not want_stubdom and vm .features .check_with_template (
@@ -785,7 +793,9 @@ async def start_audio_for_vm(self, vm):
785793
786794 :param vm: VM for which start AUDIO daemon
787795 """
788- if getattr (vm , "is_preload" , False ):
796+ if getattr (vm , "is_preload" , False ) and not vm .features .get (
797+ "preload-dispvm-early-gui" , None
798+ ):
789799 return
790800 pacat_cmd = [
791801 PACAT_DAEMON_PATH ,
@@ -807,7 +817,9 @@ async def start_gui(self, vm, force_stubdom=False, monitor_layout=None):
807817 one for target AppVM is running.
808818 :param monitor_layout: monitor layout configuration
809819 """
810- if getattr (vm , "is_preload" , False ):
820+ if getattr (vm , "is_preload" , False ) and not vm .features .get (
821+ "preload-dispvm-early-gui" , None
822+ ):
811823 return
812824 guivm = getattr (vm , "guivm" , None )
813825 if guivm != vm .app .local_name :
@@ -830,7 +842,9 @@ async def start_audio(self, vm):
830842
831843 :param vm: VM for which AUDIO daemon should be started
832844 """
833- if getattr (vm , "is_preload" , False ):
845+ if getattr (vm , "is_preload" , False ) and not vm .features .get (
846+ "preload-dispvm-early-gui" , None
847+ ):
834848 return
835849 audiovm = getattr (vm , "audiovm" , None )
836850 if audiovm != vm .app .local_name :
@@ -849,7 +863,10 @@ async def start_audio(self, vm):
849863 def on_domain_spawn (self , vm , _event , ** kwargs ):
850864 """Handler of 'domain-spawn' event, starts GUI daemon for stubdomain"""
851865
852- if not self .is_watched (vm ) or getattr (vm , "is_preload" , False ):
866+ if not self .is_watched (vm ) or (
867+ getattr (vm , "is_preload" , False )
868+ and not vm .features .get ("preload-dispvm-early-gui" , None )
869+ ):
853870 return
854871
855872 try :
@@ -874,7 +891,10 @@ def on_domain_start(self, vm, _event, **kwargs):
874891 """Handler of 'domain-start' event, starts GUI/AUDIO daemon for
875892 actual VM"""
876893
877- if not self .is_watched (vm ) or getattr (vm , "is_preload" , False ):
894+ if not self .is_watched (vm ) or (
895+ getattr (vm , "is_preload" , False )
896+ and not vm .features .get ("preload-dispvm-early-gui" , None )
897+ ):
878898 return
879899
880900 self .xid_cache [vm .name ] = vm .xid , vm .stubdom_xid
@@ -911,7 +931,10 @@ def on_connection_established(self, _subject, _event, **_kwargs):
911931 if (
912932 vm .klass == "AdminVM"
913933 or not self .is_watched (vm )
914- or getattr (vm , "is_preload" , False )
934+ or (
935+ getattr (vm , "is_preload" , False )
936+ and not vm .features .get ("preload-dispvm-early-gui" , None )
937+ )
915938 ):
916939 continue
917940
@@ -960,7 +983,10 @@ def on_property_preload_set(self, vm, _event, **_kwargs):
960983 if (
961984 not vm .klass == "DispVM"
962985 or not self .is_watched (vm )
963- or getattr (vm , "is_preload" , False )
986+ or (
987+ getattr (vm , "is_preload" , False )
988+ and not vm .features .get ("preload-dispvm-early-gui" , None )
989+ )
964990 or not vm .is_running ()
965991 ):
966992 return
0 commit comments