From 2f31c9ce68e17de80583f3f9906e3c421ec3b8bd Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 28 Dec 2019 23:46:58 +0100 Subject: [PATCH] stdpy: recognize daemon=True argument in Thread constructor --- direct/src/stdpy/threading.py | 7 +++++-- direct/src/stdpy/threading2.py | 9 ++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) 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