Mercurial > libervia-backend
diff frontends/src/quick_frontend/quick_app.py @ 1939:e68483c5a999
quick app (contact list): when a new profile is plugged, updates are locked until the end of the process, this avoid many useless refreshes
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 18 Apr 2016 18:33:55 +0200 |
parents | 011eff37e21d |
children | 633b5c21aefd |
line wrap: on
line diff
--- a/frontends/src/quick_frontend/quick_app.py Mon Apr 18 18:31:13 2016 +0200 +++ b/frontends/src/quick_frontend/quick_app.py Mon Apr 18 18:33:55 2016 +0200 @@ -215,6 +215,7 @@ self.menus = quick_menus.QuickMenusManager(self) ProfileManager.host = self self.profiles = ProfilesManager() + self._plugs_in_progress = set() # profiles currently being plugged, used to (un)lock contact list updates self.ready_profiles = set() # profiles which are connected and ready self.signals_cache = {} # used to keep signal received between start of plug_profile and when the profile is actualy ready self.contact_lists = quick_contact_list.QuickContactListHandler(self) @@ -401,6 +402,7 @@ @param profile(unicode): %(doc_profile)s """ + self._plugs_in_progress.remove(profile) self.ready_profiles.add(profile) # profile is ready, we can call send signals that where is cache @@ -410,6 +412,8 @@ handler(*args, **kwargs) self.callListeners('profilePlugged', profile=profile) + if not self._plugs_in_progress: + self.contact_lists.lockUpdate(False) def asyncConnect(self, profile, callback=None, errback=None): if not callback: @@ -428,6 +432,8 @@ @param profiles: list of valid profile names """ + self.contact_lists.lockUpdate() + self._plugs_in_progress.update(profiles) self.plugging_profiles() for profile in profiles: self.profiles.plug(profile)