From 6d19a9c2ccc7e7d688aa5dc4c87d2c15bb9d2644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Wed, 1 Jul 2015 07:03:52 +0200 Subject: [PATCH] Do not hold the lock while retrieving application icons (qubes.NotifyTools) This can take quite a long time, so do not block the whole system. --- qubes-rpc/qubes-notify-tools | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/qubes-rpc/qubes-notify-tools b/qubes-rpc/qubes-notify-tools index bb93e116..f0ec3b5a 100755 --- a/qubes-rpc/qubes-notify-tools +++ b/qubes-rpc/qubes-notify-tools @@ -14,6 +14,7 @@ def main(): print >> sys.stderr, 'This script must be called as qrexec service!' exit(1) + source_vm = None qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_writing() try: @@ -74,15 +75,17 @@ def main(): qvm_collection.save() - retcode = subprocess.call(['qvm-sync-appmenus', '--force-rpc']) - if retcode == 0 and hasattr(source_vm, 'appmenus_recreate'): - # TODO: call the same for child VMs? This isn't done for Linux VMs, - # so probably should be ignored for Windows also - source_vm.appmenus_recreate() except Exception as e: print >> sys.stderr, e.message exit(1) finally: qvm_collection.unlock_db() + retcode = subprocess.call(['qvm-sync-appmenus', '--force-rpc']) + if retcode == 0 and hasattr(source_vm, 'appmenus_recreate'): + # TODO: call the same for child VMs? This isn't done for Linux VMs, + # so probably should be ignored for Windows also + source_vm.appmenus_recreate() + + main()