Commit Graph

188 Commits

Author SHA1 Message Date
rdb 6a323081c0 pipeline: fix regression with Thread.getCurrentTask() disappearing
This method was accidentally un-exposed by 2e20a0f16e

Fixes #226
2018-01-10 20:17:43 +01:00
rdb 8a94a0d439 loader: fix crash getting result from async load 2017-12-27 22:56:21 +01:00
rdb 588d41ed7e Fix assorted compiler warnings 2017-12-24 15:12:58 +01: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 46189dc1bf Compile fix for macOS build
[skip ci]
2017-12-04 22:52:23 +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 08629ef1a0 Fix a few compiler warnings 2017-11-07 15:38:40 +01:00
rdb dd2806c8bd Mark constructors 'explicit' for which coercion makes no sense 2017-11-06 19:47:38 +01:00
rdb 0c0f9adab9 Support coroutines and async/await in the task manager and loader 2017-10-31 18:56:41 +01:00
Younguk Kim b71ee446e3 Add has_hook functions taking function pointer or callback data in EventHandler 2017-09-24 02:46:00 +09: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
rdb ce29ae490d Interrogate improvements, more properties, MAKE_SEQ_PROPERTY 2016-05-11 00:16:53 +02:00
tobspr 0fcfb8e372 New file headers, new comment style 2016-02-17 17:47:48 +01:00
rdb 090e912ce6 Cleanup of comments and whitespace 2016-02-01 22:30:43 +01:00
rdb dafe48a6bc Begin to add snake_case/property interfaces to important direct classes 2015-12-26 17:00:51 +01:00
rdb 6480e82e3b First pass adding properties to many Panda classes 2015-12-10 16:23:06 +01:00
rdb bdf91e206d Remove references to Python.h and py_config.h from Panda headers, to prevent picking up a dependency on Python libraries in third-party modules 2015-11-28 16:33:44 +01:00
rdb db3ab953e4 Remove ppremake, genPyCode, and all hacks created to support them 2015-11-09 19:06:49 +01:00
rdb ddf8343590 Reorganise explicit template instantiations so that it always happens in the .cxx file, while remaining backward compatible with MSVC's standards-breaking implementation 2015-10-16 15:38:28 +02:00
rdb 16e7831566 Remove executable permissions from files that don't need them 2015-04-05 15:41:49 +02: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 40a40b20cf Rename EventStoreValue to ParamValue to make it more generic,
in anticipation of new parameter system
2014-12-10 00:26:26 +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 31a71c990d Fix issues with OS X 10.9 compilation, fix issues uncovered by clang 2014-10-12 18:45:37 +00:00
rdb 85a5be984f Raw button event support, with X11 implementation (untransformed QWERTY) 2014-03-07 12:52:15 +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
rdb c7c5671911 0 -> NULL 2012-10-25 08:56:22 +00:00
rdb 33d494d0f4 make AsyncTaskManager::_global_ptr an ordinary pointer to prevent static init issues with PandaFramework 2012-08-15 10:55:40 +00:00
David Rose 646f12f625 squelch backtrace on SystemExit 2012-02-16 00:19:09 +00:00
David Rose 279b3a8aeb support wx main loop in p3d system too 2012-01-14 01:18:10 +00:00
David Rose 93d625845c invert the WxGlobal loop: now wx owns the main loop, it seems to like that a lot better. 2012-01-14 00:16:05 +00:00
David Rose dfe16c64f6 rename all Panda-built libraries to begin with libp3 or libpanda 2011-12-06 02:39:21 +00:00
David Rose 65e9303415 attempts to fix win32 build 2011-10-11 15:41:53 +00:00
David Rose 4785161374 squelch some more compiler warnings 2011-06-18 00:16:48 +00:00
rdb 804a72b716 Partially apply typo fix patch I found somewhere on the web, by someone named Christoph Korn 2010-11-16 08:58:45 +00:00
rdb 102b46878e More compatibility with exotic compilers (yes, I actually tried to port Panda to clang) 2010-04-07 16:59:46 +00:00
David Rose 2494b49728 Thread::get_current_task() 2010-02-09 20:14:58 +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 59e6a8a444 spam -> debug 2009-12-28 19:15:11 +00:00