@@ -347,3 +347,71 @@ async def run_service_for_stdio(self, *args, input=None, **kwargs):
347
347
)
348
348
349
349
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