Commit Graph

10151 Commits

Author SHA1 Message Date
rdb 8a9d83b604 physx: fix compile error 2018-06-04 17:28:13 +02:00
rdb be282627a8 express: make PointerTo directly initializable from nullptr 2018-06-04 11:21:18 +02:00
Sam Edwards f0fc6e6d56 express: Fully qualify std::nullptr_t 2018-06-03 16:56:53 -06:00
Sam Edwards 5e82671084 general: Do away with TYPENAME macro 2018-06-03 16:36:34 -06:00
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
Sam Edwards 92d2f5e195 general: Don't use NULL where not appropriate 2018-06-03 16:31:01 -06:00
Sam Edwards d422d74abb general: Clean up asserts which were abusing NULL 2018-06-03 16:26:44 -06:00
Sam Edwards ebe1b0763f express: Allow WeakPointer comparisons to nullptr
This saves us from having to do casts like:
if (foo == (const FooType *)nullptr) {
  ...
}
2018-06-03 16:26:44 -06:00
rdb 57602d750f cocoadisplay: don't crash if window/buffer fails to open 2018-06-03 22:35:37 +02:00
rdb eb960669a5 display: fix assert when window fails to open
The assert is being triggered because the window is already being removed in open_windows.  It does not really matter if it returns false anyway, as long as the window is removed one way or another.
2018-06-03 22:33:59 +02:00
rdb c08339e8ce ShaderGenerator: fix error with normal map and only ambient light
Closes #331
2018-06-03 22:30:40 +02:00
rdb e0245d2777 First step towards eliminating `using namespace std;` (#335) 2018-06-03 20:32:23 +02:00
rdb 298147bb39 Give several additional classes constexpr constructors
This is useful because these types are created at static init time, and giving them a constexpr constructor and trivial destructor lets them be created during constant initialization, which helps to prevent static init ordering issues.
2018-06-03 10:45:58 -04:00
rdb 21d8c29645 More warning fixes 2018-06-03 06:45:35 -04:00
rdb 213ae6b029 Change some .T files to new docstring style that were missed 2018-06-01 20:44:30 +02:00
Sam Edwards 159b43e563 general: Address a few more compiler warnings 2018-06-01 02:54:13 -06:00
rdb 283d43f988 putil: workaround macOS 10.6 compile error until #300 is fixed
[skip ci]
2018-05-30 23:29:59 +02:00
rdb 190c553c57 dtool_config.h: remove some macros for ancient C++ compilers 2018-05-30 23:15:24 +02:00
rdb aa1b06f132 putil: make BitMask et al literal types 2018-05-30 23:04:43 +02:00
rdb db5dd98d33 general: further warning fixes, use -Wno-unused-variable if NDEBUG
Disabling unused variable checking is needed in NDEBUG builds because of the heavy use of temporary variables in asserts.
2018-05-30 22:51:04 +02:00
rdb 6b726fa697 general: fix various compiler warnings and issues exposed thereby 2018-05-30 11:09:35 +02:00
Sam Edwards 32e1ca2252 general: Fix several miscategorized EXPCL_PANDA_* macros 2018-05-29 22:49:35 -06:00
Sam Edwards a251c6dd8f general: Change HAVE_LOCKF to PHAVE_LOCKF
HAVE_LOCKF is already defined by pyconfig.h in
(at least) Python 3.6 - changing the macro name
here avoids warnings
2018-05-27 14:06:14 -06:00
Sam Edwards 24c8ef9887 general: Fix missing include 2018-05-27 14:06:08 -06:00
rdb 8d84c58d73 express: explicitly declare defaulted Datagram copy/move ctor/assign
Fixes #329
2018-05-27 15:38:19 +02:00
rdb 3d49986ce2 char: fix crash during Character destructor (regression)
This was a regression in 0bb81a43c9 which was not keeping an edge case in mind if a weak pointer is locked during object destruction.  This issue was fixed by 525a05ea2b1d00a1db901f883f1755943aeff33c, but that is not enough since it causes CharacterJointEffect::get_character() to return null now, so we need a separate method to check if a CharacterJointEffect belongs to a given character.  This is more efficient, too.

Fixes #330
2018-05-27 15:37:45 +02:00
rdb f2d429b817 express: weakptr.lock() should return null during object destruction
This came up in #330; the Character destructor caused something to call lock() on a weak pointer to that character, which would induce a ref() and unref() pair, but since the refcount was 0, this would call the destructor and thereby create infinite recursion.

I considered instead calling mark_deleted() inside unref() so that the callbacks get to run before the object is actually deleted, and was_deleted() will become true as soon as unref() reaches 0.  However, this would require grabbing the lock in unref() to be fully thread-safe, since we would need to bring the refcount to 0 and mark the object as deleted in one atomic operation, so this would be an unacceptable general performance penalty.

Instead, WeakPointerTo::lock() now atomically increments the reference count if it is not already zero, and returns null otherwise.  This should be safe because the object cannot be deleted while the WeakReferenceList lock is held.
2018-05-27 15:37:03 +02:00
Sam Edwards 0ce9dc98b1 general: Move inclusion of checkPandaVersion.h to dtoolbase
This includes it everywhere, meaning developers no longer must
remember to include it in each metalib init file.
2018-05-26 18:39:24 -06:00
Sam Edwards e4c9526e08 ffmpeg: Make read_packet return AVERROR_EOF
Newer versions of FFmpeg deprecate returning 0 to indicate
EOF, and instead request use of AVERROR_EOF.

The oldest supported versions of FFmpeg/libav will treat any
error code the same as returning 0.

Fixes #315
2018-05-26 15:17:43 -06:00
rdb 5c9705c21c pgraph: fix crash accessing python_tags via dict property
Fixes #326
2018-05-24 22:44:08 +02:00
rdb ec04dbed0c gobj: fix static init ordering issue with VertexTransform cycler
This comes up when building with DEBUG_THREADS; there is a PipelineCycler created at static init time, and the type tracking in Pipeline won't work properly if the CData's parent's TypeHandle has not yet been initialized.
2018-05-24 21:40:48 +02:00
rdb 2e7bca90b0 express: fix PointerToArray coercibility regression, fix clear()
This was caused by the assignment operators not being visible to interrogate.
2018-05-24 21:39:54 +02:00
rdb 323ddc7d67 putil: fix UpdateSeq::fresh().is_special() return value 2018-05-24 21:37:58 +02:00
rdb 5e0ce969fe Work around clang 3.1 compile error with static constexpr
There is a bug in clang versions before 3.2 (including the one shipped with Xcode) that makes it give a "conflicting types" compile error when there is a static constexpr function defined outside the class.  The way to work around this is either to remove one of the "static" or "constexpr" keywords, or to simply put the definition inline.

See: https://stackoverflow.com/a/17494592/2135754

I would try and upgrade Xcode to version 5 to see if the problem is fixed, but the buildbot still runs OS X Lion (10.7) and the last version of Xcode that works on Lion is 4.6.3, so it seems easier to just apply these workarounds for now.
2018-05-24 14:34:03 +02:00
rdb 8eeab7a26a dxgsg9: fix compile error due to WeakPointerTo changes 2018-05-24 14:26:21 +02:00
rdb 3077316782 general: use proper deleted funcs instead of stubs with asserts
This gives better compile-time diagnostics and saves on code, while also better communicating intent.
2018-05-23 23:35:27 +02:00
rdb 9fad3dba60 general: remove macros for compatibility with non-C++11 compilers
Now that we require MSVC 2015, we no longer need all this nonsense, so we can write cleaner code.
2018-05-23 23:33:05 +02:00
rdb f45ddcab2f general: switch to C++11 Lockable semantics for mutexes
This renames acquire/release to lock/unlock in order to be compatible with std::lock_guard and std::unique_lock (which will eventually replace the *MutexHolder classes).  It will also allow us to typedef MutexImpl to std::mutex later on.
2018-05-23 20:37:56 +02:00
rdb 3653413cd4 bullet: fix BulletSoftBodyNode::get_node deadlock 2018-05-23 16:55:17 +02:00
rdb 941fda6ec3 pgraph: fix comparisons between WeakNodePath and NodePath
Previously it would only work correctly if the WeakNodePath appeared on the left side of the comparison operator.
2018-05-20 15:57:23 +02:00
rdb 14f118b672 pgraph: expose WeakNodePath to Python 2018-05-20 15:56:58 +02:00
rdb 0bb81a43c9 express: make a thread safe weak pointer implementation (#321)
To access a WeakPointerTo in a thread-safe way, use something like this:

    if (auto ptr = weak_ptr.lock()) {
      ..use ptr as regular PointerTo
    }

The new implementation no longer needs a reference to be stored to all weak pointers on the WeakReferenceList; a mere count of weak pointers is sufficient.  Therefore, callbacks theoretically no longer require a WeakPointerTo to be constructed.

The WeakPointerTo class is not actually atomic; it could be made so, but I don't believe it's worth it at this time.
2018-05-15 13:40:21 +02:00
Sam Edwards 47f7d3f297 general: Add headers explaining the renamed config_*.h 2018-05-14 02:36:42 -06:00
Sam Edwards 52e7c952b3 putil: Rename config_util to config_putil 2018-05-14 02:36:42 -06:00
Sam Edwards 87c11d8018 pstatclient: Rename config_pstats to config_pstatclient 2018-05-14 02:36:42 -06:00
rdb 549301d0f0 putil: keep reference to objects queued for writing
This prevents a crash when a reference counted object is destroyed right after a write_pointer call.

Fixes #310
2018-05-05 23:10:41 +02:00
rdb b45726001e task: fix double free when failing to retrieve coroutine exception 2018-05-05 20:53:04 +02:00
rdb 9db74bca1d task: use consistent ordering for tasks with same sort value
We don't guarantee a specific order in this case, especially because they can be run in either order if there is more than one thread, but it is still useful to have a defined order for single-threaded task chains.  To that end, tasks
are now run in the order in which they were added to taskMgr.add (in absence of any other ordering constraints).

Fixes #309
2018-05-01 15:06:27 +02:00
rdb 3b4d4b0804 glgsg: fix broken upload of downscaled texture without mipmaps
Fixes #306
2018-04-30 19:13:54 -04:00
Donny Lawrence 574000aedd Add getter and setter for Content-Type header
Fixes #296
Closes #305
2018-04-21 11:20:18 +02:00