45 Commits

Author SHA1 Message Date
Sam Edwards
e2b4353800 general: Replace NULL (and 0 as pointer) with C++11 nullptr
Exceptions to this replacement are:
- .c files
- Headers included by a .c file
- stb_image.h
- dr_flac.h
- Strings
- Comments
2018-06-03 16:35:13 -06:00
rdb
b45726001e task: fix double free when failing to retrieve coroutine exception 2018-05-05 20:53:04 +02:00
rdb
ed5e5386b9 AsyncFuture improvements, incl. support for gathering futures 2017-12-21 14:07:01 +01:00
rdb
193e4b5f59 interrogate: clean py_panda.h; use macros to access Dtool_PyInstDef 2017-12-12 23:03:38 +01:00
rdb
2e20a0f16e Implement awaitable thread-safe future for async operations
This introduces AsyncFuture as a new base class of AsyncTask.  It's modelled after asyncio's Future class, except that it is thread-safe and you can use result() to block the current thread waiting for the future to finish (of course this is not necessary for use with coroutines).

AsyncFuture should be used for any operation that finishes in the future, to get the benefit of awaitability within coroutines as well as a standard interface for querying status and results of the operation as well as cancelling it.  As such, it's been implemented in various places, including texture.prepare() and win.trigger_copy().

Note that AsyncFuture is intended to be used *once*; it cannot be used more than once.  As an example of how this works, tex.prepare() will return the same future as long as the prepare isn't complete, but when it is done, subsequent calls to tex.prepare() will return a new future.
2017-12-04 22:25:28 +01:00
rdb
0c0f9adab9 Support coroutines and async/await in the task manager and loader 2017-10-31 18:56:41 +01:00
rdb
47388b0dbc Separate out CPython calls from core libs; eliminate need for pystub 2016-07-20 14:30:41 +02:00
rdb
85386049f0 Merge branch 'release/1.9.x' 2016-07-09 15:39:07 +02:00
rdb
47d1b4e220 PythonTask: don't crash if repr(owner) errors, deal better with bad owners 2016-07-09 10:02:55 +02:00
rdb
7d6b7f40f5 Merge branch 'release/1.9.x' 2016-06-09 21:52:51 +02:00
rdb
b303962e96 Disable cycle detection in tasks for now, it is way too unstable 2016-06-09 16:48:31 +02:00
rdb
e9c76328fb Fix a crash in PythonTask destructor 2016-06-08 13:18:31 +02:00
tobspr
0fcfb8e372 New file headers, new comment style 2016-02-17 17:47:48 +01:00
rdb
b63d5fbe8c Support cyclic garbage collection through PythonTask objects 2015-03-15 12:24:06 +01:00
rdb
4dc4c9eb3d Merge branch 'master' into interrogate-overhaul
Conflicts:
	dtool/src/interrogate/functionRemap.cxx
	dtool/src/interrogate/interfaceMakerPythonNative.cxx
	panda/src/event/pythonTask.cxx
	panda/src/express/multifile.h
	panda/src/express/pointerToArray.I
	panda/src/mathutil/config_mathutil.N
	panda/src/putil/config_util.N
	panda/src/putil/doubleBitMask.h
2015-02-11 14:41:58 +01:00
rdb
cbd70ad8af Move all Python bindings out of core DLLs into the .pyd files. 2015-02-10 14:30:51 +01:00
rdb
6db5d0dc11 Huge cppparser and interrogate overhaul, bringing:
* Better support for typedefs
* Same code should compile for both 32-bit and 64-bit
* C++11 typed enum support
* Synthesize __setitem__ when operator [] returns reference
* Rewrite coerce system to have better performance
* Change semantics of __getattr__ and __setattr__ to match
  Python's, add __getattribute__, __delattr__ and __delitem__
* Improve performance of slot functions a bit more
* Reduce memory overhead of type system
* Some support for wrapping arrays of numeric types
* C++11 character type support in cppparser
* Chars are handled as strings of length 1
* Template functions for CreatePyInstance that use runtime type map
* More functions from dtool as extension functions
* Code cleanup
2014-12-30 16:43:52 +01:00
rdb
a65b477734 Commit patches by cfsworks:
cxx: Fix missing includes masked by composite builds.
misc: Fix typos in comments.
config: Fix missing config forward-declarations.
direct: Adjust Python imports to panda3d.* instead of pandac.*.
display: Split graphicsWindow out into an extension.
framework: Use if/elif/elif/endif instead of ifdef/elif/elif/endif.
ode: Remove erroneous INLINE declarations.
interval: Fix missing import.
2014-10-19 22:41:47 +00:00
rdb
5f2c0a6e04 Big commit aiding in separation of Python bindings:
* Most extension functions have been moved to C++.
 * In makepanda, Python bindings are compiled into panda3d/<module>.pyd.
2014-02-20 13:33:26 +00:00
rdb
40cddd6280 Fixes for Python 3.2 2013-03-27 15:48:24 +00:00
rdb
192d10b937 Experimental Python 3 support to the C++ code including interrogate. Also adds support for rich comparison in interrogate. 2013-02-16 19:22:26 +00:00
David Rose
646f12f625 squelch backtrace on SystemExit 2012-02-16 00:19:09 +00:00
Darren Ranalli
0955e0aabc make sure DirectObject._addTask and ._clearTask are called only once per task create/destroy 2010-01-13 23:37:56 +00:00
David Rose
a5e0de3988 python on iphone 2009-04-28 00:57:56 +00:00
Darren Ranalli
d5d23c2fa7 fix memory leak 2009-02-04 00:10:38 +00:00
rdb
227c7c3497 Compatibility with Python 2.3 2008-11-30 13:22:34 +00:00
David Rose
bb1f8d6ce2 go back to Dtool_TypedReferenceCount 2008-11-06 23:26:51 +00:00
David Rose
02d98e41c7 friendlier interface for task management 2008-10-14 02:17:38 +00:00
David Rose
3bd5914b57 upon_birth race condition issues 2008-10-13 18:24:18 +00:00
David Rose
7683d94100 add TaskManager- events 2008-10-11 14:49:10 +00:00
David Rose
bca1533952 interrupt should not stop task 2008-10-10 21:30:11 +00:00
David Rose
a6a4a893d0 Task.sequence() 2008-10-05 00:24:55 +00:00
David Rose
4beba6ca6f integrate pview with new task manager 2008-10-03 20:30:07 +00:00
David Rose
b9cb301df9 fix memory leaks 2008-10-03 19:06:52 +00:00
David Rose
7cca74a597 task.frame 2008-10-03 04:30:32 +00:00
David Rose
277753ed2b a bit friendlier 2008-10-03 03:52:00 +00:00
David Rose
76687fca8f expose task.wakeTime 2008-10-03 03:05:19 +00:00
David Rose
a74bf92e67 combine DS_again with DS_restart 2008-09-29 18:37:10 +00:00
David Rose
2266110083 AsyncTask::is_runnable 2008-09-29 05:59:41 +00:00
David Rose
c59bfe5459 more threading issues 2008-09-28 21:32:11 +00:00
David Rose
a29328046a fix some threading issues 2008-09-28 17:11:42 +00:00
David Rose
8bb89607ab DS_pickup 2008-09-27 15:56:50 +00:00
David Rose
fd1218b07b task generators 2008-09-27 12:33:47 +00:00
David Rose
7e217b8bdc handle more exotic uses of taskMgr 2008-09-26 23:42:22 +00:00
David Rose
524128b9fd wip: starting experimental C-based task manager 2008-09-19 00:58:04 +00:00