@@ -347,3 +347,71 @@ async def run_service_for_stdio(self, *args, input=None, **kwargs):
347347 )
348348
349349 return stdouterr
350+
351+ @qubes .events .handler ("property-set:default_dispvm" )
352+ def on_property_set_default_dispvm (
353+ self , event , name , newvalue , oldvalue = None
354+ ): # pylint: disable=unused-argument
355+ if newvalue == oldvalue :
356+ return
357+ old_appvm = self .app .domains [oldvalue ]
358+ appvm = self .app .domains [newvalue ]
359+ appvm .preload_max_ignore_global = False
360+ for qube in [old_appvm , appvm ]:
361+ asyncio .ensure_future (
362+ qube .fire_event_async ("domain-preload-dispvm-start" )
363+ )
364+
365+ @qubes .events .handler ("property-del:default_dispvm" )
366+ @qubes .events .handler ("property-reset:default_dispvm" )
367+ def on_property_del_default_dispvm (
368+ self , event , name , oldvalue = None
369+ ): # pylint: disable=unused-argument
370+ if oldvalue :
371+ appvm = self .app .domains [oldvalue ]
372+ appvm .preload_max_ignore_global = True
373+ asyncio .ensure_future (
374+ appvm .fire_event_async ("domain-preload-dispvm-start" )
375+ )
376+
377+ @qubes .events .handler ("domain-feature-delete:preload-dispvm-max" )
378+ def on_feature_delete_preload_dispvm_max (
379+ self , event , feature
380+ ): # pylint: disable=unused-argument
381+ appvm = getattr (self , "default_dispvm" , None )
382+ if not appvm :
383+ return
384+ appvm .preload_max_ignore_global = True
385+ asyncio .ensure_future (
386+ appvm .fire_event_async ("domain-preload-dispvm-start" )
387+ )
388+
389+ @qubes .events .handler ("domain-feature-pre-set:preload-dispvm-max" )
390+ def on_feature_pre_set_preload_dispvm_max (
391+ self , event , feature , value , oldvalue = None
392+ ): # pylint: disable=unused-argument
393+ appvm = getattr (self , "default_dispvm" , None )
394+ if not appvm :
395+ return
396+ appvm .fire_event (
397+ "domain-feature-pre-set:preload-dispvm-max" ,
398+ pre_event = True ,
399+ feature = "preload-dispvm-max" ,
400+ value = value ,
401+ oldvalue = oldvalue ,
402+ )
403+
404+ @qubes .events .handler ("domain-feature-set:preload-dispvm-max" )
405+ def on_feature_set_preload_dispvm_max (
406+ self , event , feature , value , oldvalue = None
407+ ): # pylint: disable=unused-argument
408+ appvm = getattr (self , "default_dispvm" , None )
409+ if not appvm :
410+ return
411+ appvm .preload_max_ignore_global = False
412+ appvm .fire_event (
413+ "domain-feature-set:preload-dispvm-max" ,
414+ feature = "preload-dispvm-max" ,
415+ value = value ,
416+ oldvalue = oldvalue ,
417+ )
0 commit comments