def emit(self, signal, *args):
        """
        Emits the given signal with the inputted args.  This will go through
        its list of connected callback slots and call them.
        
        :param      signal | <variant>
                    *args  | variables
        """
        callbacks = self._callbacks.get(signal, [])
        new_callbacks = []
        for callback in callbacks:
            # clear out deleted pointers
            if not callback.isValid():
                continue

            new_callbacks.append(callback)

            try:
                callback(*args)
            except StandardError:
                logger.exception('Error occurred during callback.')

        self._callbacks[signal] = new_callbacks