- if name not in self.cache:
- self.cache[name] = (True, f(self))
- return self.cache[name][1]
+ if name not in cache:
+ cache[name] = (True, f(self))
+ return cache[name][1]
CHANGED_SPECIFIC = 3 # second tuple will specify what exactly changed
CHANGED_POLL = 4 # a timer expired
CHANGED_SPECIFIC = 3 # second tuple will specify what exactly changed
CHANGED_POLL = 4 # a timer expired
# we should not disconnect from upstream if
# there are still elements depending on us.
assert len(self.downstream_elements) == 0, "there are still downstream elements left"
# we should not disconnect from upstream if
# there are still elements depending on us.
assert len(self.downstream_elements) == 0, "there are still downstream elements left"
- if self.source is not None:
- self.source.disconnectDownstream(self)
-
+ for s in self.sources:
+ s.disconnectDownstream(self)
+
+ if self.source:
+ # sources are owned by the Screen, so don't destroy them here.
+ self.destroy()
+ self.source = None
+ self.sources = [ ]
+
def disconnectDownstream(self, downstream):
self.downstream_elements.remove(downstream)
if self.master == downstream:
def disconnectDownstream(self, downstream):
self.downstream_elements.remove(downstream)
if self.master == downstream:
def setSuspend(self, suspended):
changed = self.__suspended != suspended
if not self.__suspended and suspended:
def setSuspend(self, suspended):
changed = self.__suspended != suspended
if not self.__suspended and suspended: