diff --git a/src/gui/DamarisGUI.py b/src/gui/DamarisGUI.py index f947ed3..282b9ae 100644 --- a/src/gui/DamarisGUI.py +++ b/src/gui/DamarisGUI.py @@ -197,6 +197,9 @@ class DamarisGUI: # lock file to prevent other DAMARIS to start immediatly self.lockfile = LockFile() # = os.path.expanduser("~/.damaris.lock") self.id = None + + #to stop queued experiments + self.stop_experiment_flag = threading.Event() exp_script = u"" if exp_script_filename is not None and exp_script_filename != "": @@ -454,10 +457,13 @@ class DamarisGUI: self.log.textbuffer.create_mark( "lastdumped", self.log.textbuffer.get_end_iter( ), left_gravity=True ) loop_run=0 - interval = 2 + #user shorter interval because this blocks user events from the GUI + interval = 0.1 + self.stop_experiment_flag.clear() + self.id = self.lockfile.add_experiment() - while not self.lockfile.am_i_next(): - time.sleep(interval) + while not self.lockfile.am_i_next() and not self.stop_experiment_flag.isSet(): + self.stop_experiment_flag.wait(interval) while gtk.events_pending(): gtk.main_iteration(False) if loop_run > 1: @@ -937,6 +943,7 @@ class DamarisGUI: def stop_experiment( self, widget, data=None ): if self.state in [ DamarisGUI.Run_State, DamarisGUI.Pause_State ]: + self.stop_experiment_flag.set() if self.si is None: return still_running = filter( None, [ self.si.exp_handling, self.si.res_handling, self.si.back_driver ] )