              if self.patch_threads.completed():
                  logger.debug("All patch threads completed")
                  break
              sleep(1)
          self.patch_threads.join()
  
          logger.debug("Putting EOF")
          save_queue.put("EOF")
          logger.debug("Converted images")
  
 
</s> remove             if self.patch_threads.completed():
 </s> add             if self._patch_threads.completed(): </s> remove             self.check_thread_error()
            if self.disk_io.completion_event.is_set():
 </s> add             self._check_thread_error()
            if self._disk_io.completion_event.is_set(): </s> remove     def check_thread_error(self):
        """ Check and raise thread errors """
        for thread in (self.predictor.thread,
                       self.disk_io.load_thread,
                       self.disk_io.save_thread,
                       self.patch_threads):
 </s> add     def _check_thread_error(self):
        """ Monitor all running threads for errors, and raise accordingly. """
        for thread in (self._predictor.thread,
                       self._disk_io.load_thread,
                       self._disk_io.save_thread,
                       self._patch_threads): </s> remove             self.pre_process.do_actions(item)
            self.load_queue.put(item)
 </s> add             self._pre_process.do_actions(item)
            self._queues["load"].put(item) </s> remove             detected_faces = self.get_detected_faces(filename, image)
 </s> add             detected_faces = self._get_detected_faces(filename, image)
        self._patch_threads.join()
              if self.patch_threads.completed():
                  logger.debug("All patch threads completed")
                  break
              sleep(1)
        self._patch_threads.join()
  
          logger.debug("Putting EOF")
          save_queue.put("EOF")
          logger.debug("Converted images")
  
keep keep keep keep replace keep keep keep keep keep
 Smart Masks to Convert (#957)

- scripts.convert - Use Smart Masks for Convert
    * Make on-the-fly conversion an explicit option

- Move BlurMask to lib.faces_detect

- tools.preview - Fix for smart masks
    * Subclass from tk.Tk
    * Options to lib.gui.control_helper
    *variable cleanup

- lib.logger - Demote more tensorflow deprecation messages

- Documentation:
    * lib.faces_detect.BlurMask
    * plugins.convert.mask
    * lib.convert
    * scripts.convert
    * scripts.fsmedia
    * tools.preview 
scripts/convert.py