# HG changeset patch # User Goffi # Date 1552144980 -3600 # Node ID 0f277708e2aeade0bbb5b7fac7561965eca54ec8 # Parent 76f714b12d2132f33334027a645fbcb10fadebb9 bridge (pb): added bridgeDeactivateSignals and bridgeReactivateSignals methods: those methods stop and restart signals propagation, they are used on mobile OS when the frontend is paused. diff -r 76f714b12d21 -r 0f277708e2ae sat/bridge/bridge_constructor/constructors/pb/pb_core_template.py --- a/sat/bridge/bridge_constructor/constructors/pb/pb_core_template.py Sun Mar 03 20:59:29 2019 +0100 +++ b/sat/bridge/bridge_constructor/constructors/pb/pb_core_template.py Sat Mar 09 16:23:00 2019 +0100 @@ -69,6 +69,24 @@ log.debug(u"Removing signal handler for dead frontend") self.signals_handlers.remove(handler) + def _bridgeDeactivateSignals(self): + if hasattr(self, "signals_paused"): + log.warning(u"bridge signals already deactivated") + if self.signals_handler: + self.signals_paused.extend(self.signals_handler) + else: + self.signals_paused = self.signals_handlers + self.signals_handlers = [] + log.debug(u"bridge signals have been deactivated") + + def _bridgeReactivateSignals(self): + try: + self.signals_handlers = self.signals_paused + except AttributeError: + log.debug(u"signals were already activated") + else: + del self.signals_paused + log.debug(u"bridge signals have been reactivated") ##METHODS_PART## @@ -103,5 +121,18 @@ self, name, lambda *args, **kwargs: self.sendSignal(name, *args, **kwargs) ) + def bridgeDeactivateSignals(self): + """Stop sending signals to bridge + + Mainly used for mobile frontends, when the frontend is paused + """ + self.root._bridgeDeactivateSignals() + + def bridgeReactivateSignals(self): + """Send again signals to bridge + + Should only be used after bridgeDeactivateSignals has been called + """ + self.root._bridgeReactivateSignals() ##SIGNALS_PART## diff -r 76f714b12d21 -r 0f277708e2ae sat/bridge/pb.py --- a/sat/bridge/pb.py Sun Mar 03 20:59:29 2019 +0100 +++ b/sat/bridge/pb.py Sat Mar 09 16:23:00 2019 +0100 @@ -69,6 +69,24 @@ log.debug(u"Removing signal handler for dead frontend") self.signals_handlers.remove(handler) + def _bridgeDeactivateSignals(self): + if hasattr(self, "signals_paused"): + log.warning(u"bridge signals already deactivated") + if self.signals_handler: + self.signals_paused.extend(self.signals_handler) + else: + self.signals_paused = self.signals_handlers + self.signals_handlers = [] + log.debug(u"bridge signals have been deactivated") + + def _bridgeReactivateSignals(self): + try: + self.signals_handlers = self.signals_paused + except AttributeError: + log.debug(u"signals were already activated") + else: + del self.signals_paused + log.debug(u"bridge signals have been reactivated") ##METHODS_PART## @@ -103,6 +121,19 @@ self, name, lambda *args, **kwargs: self.sendSignal(name, *args, **kwargs) ) + def bridgeDeactivateSignals(self): + """Stop sending signals to bridge + + Mainly used for mobile frontends, when the frontend is paused + """ + self.root._bridgeDeactivateSignals() + + def bridgeReactivateSignals(self): + """Send again signals to bridge + + Should only be used after bridgeDeactivateSignals has been called + """ + self.root._bridgeReactivateSignals() def actionNew(self, action_data, id, security_limit, profile): self.sendSignal("actionNew", action_data, id, security_limit, profile)