|  | @@ -6,6 +6,7 @@ from celery.utils.dispatch import Signal
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  class Polaroid(object):
 |  |  class Polaroid(object):
 | 
											
												
													
														|  | 
 |  | +    _tref = None
 | 
											
												
													
														|  |      shutter_signal = Signal(providing_args=("state", ))
 |  |      shutter_signal = Signal(providing_args=("state", ))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def __init__(self, state, freq=1.0, verbose=False):
 |  |      def __init__(self, state, freq=1.0, verbose=False):
 | 
											
										
											
												
													
														|  | @@ -14,7 +15,7 @@ class Polaroid(object):
 | 
											
												
													
														|  |          self.verbose = verbose
 |  |          self.verbose = verbose
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def install(self):
 |  |      def install(self):
 | 
											
												
													
														|  | -        timer2.apply_interval(self.freq * 1000.0, self.capture)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        self._tref = timer2.apply_interval(self.freq * 1000.0, self.capture)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def on_shutter(self, state):
 |  |      def on_shutter(self, state):
 | 
											
												
													
														|  |          pass
 |  |          pass
 | 
											
										
											
												
													
														|  | @@ -29,3 +30,15 @@ class Polaroid(object):
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def capture(self):
 |  |      def capture(self):
 | 
											
												
													
														|  |          return self.state.freeze_while(self.shutter)
 |  |          return self.state.freeze_while(self.shutter)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    def cancel(self):
 | 
											
												
													
														|  | 
 |  | +        if self._tref:
 | 
											
												
													
														|  | 
 |  | +            self._tref()
 | 
											
												
													
														|  | 
 |  | +            self._tref.cancel()
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    def __enter__(self):
 | 
											
												
													
														|  | 
 |  | +        self.install()
 | 
											
												
													
														|  | 
 |  | +        return self
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    def __exit__(self, *exc_info):
 | 
											
												
													
														|  | 
 |  | +        self.cancel()
 |