          swap, then trigger the patch event to run the faces through patching.
          """
          self._load_frames()
          self._predict()
          self._app.dispatcher.set_needs_patch()
          logger.debug("Generated new random samples")
 
</s> remove         self._trigger_patch.set()
 </s> add         self._app.dispatcher.set_needs_patch()
        logger.debug("Generated new random samples") </s> remove         with self._lock:
 </s> add         with self._app.lock: </s> remove     display: :class:`FacesDisplay`
        The display section of the Preview GUI.
    lock: :class:`threading.Lock`
        A threading lock to prevent multiple GUI updates at the same time.
    trigger_patch:  :class:`threading.Event`
        An event to indicate that a converter patch should be run
 </s> add  </s> remove         """ Load new faces to display in preview.
 </s> add         """ Patch faces with current convert settings.
        logger.debug("Generating new random samples")
        self._app.dispatcher.set_busy()
          swap, then trigger the patch event to run the faces through patching.
          """
        logger.debug("Generating new random samples")
        self._app.dispatcher.set_busy()
          self._load_frames()
          self._predict()
          self._app.dispatcher.set_needs_patch()
          logger.debug("Generated new random samples")
keep add keep keep keep keep
 bugfix:
    - preview tool - Prevent tkinter variables from exiting main thread
refactor:
    - preview tool - Split module to smaller sub-modules + docs, locales
Typing:
    - tools.preview.cli
Unit test:
    - tools.preview.viewer 
tools/preview/preview.py