diff --git a/direct/src/stdpy/threading.py b/direct/src/stdpy/threading.py index 45409f9e18..555f274ee2 100644 --- a/direct/src/stdpy/threading.py +++ b/direct/src/stdpy/threading.py @@ -87,7 +87,7 @@ class Thread(ThreadBase): object. The wrapper is designed to emulate Python's own threading.Thread object. """ - def __init__(self, group=None, target=None, name=None, args=(), kwargs={}): + def __init__(self, group=None, target=None, name=None, args=(), kwargs={}, daemon=None): ThreadBase.__init__(self) assert group is None @@ -99,7 +99,10 @@ class Thread(ThreadBase): name = _newname() current = current_thread() - self.__dict__['daemon'] = current.daemon + if daemon is not None: + self.__dict__['daemon'] = daemon + else: + self.__dict__['daemon'] = current.daemon self.__dict__['name'] = name def call_run(): diff --git a/direct/src/stdpy/threading2.py b/direct/src/stdpy/threading2.py index 6e25f5208c..f1f2e12b12 100644 --- a/direct/src/stdpy/threading2.py +++ b/direct/src/stdpy/threading2.py @@ -396,7 +396,7 @@ class Thread(_Verbose): __exc_info = _sys.exc_info def __init__(self, group=None, target=None, name=None, - args=(), kwargs=None, verbose=None): + args=(), kwargs=None, verbose=None, daemon=None): assert group is None, "group argument must be None for now" _Verbose.__init__(self, verbose) if kwargs is None: @@ -405,7 +405,10 @@ class Thread(_Verbose): self.__name = str(name or _newname()) self.__args = args self.__kwargs = kwargs - self.__daemonic = self._set_daemon() + if daemon is not None: + self.__daemonic = daemon + else: + self.__daemonic = self._set_daemon() self.__started = False self.__stopped = False self.__block = Condition(Lock()) @@ -670,7 +673,7 @@ class _MainThread(Thread): class _DummyThread(Thread): def __init__(self): - Thread.__init__(self, name=_newname("Dummy-%d")) + Thread.__init__(self, name=_newname("Dummy-%d"), daemon=True) # Thread.__block consumes an OS-level locking primitive, which # can never be used by a _DummyThread. Since a _DummyThread