This could have been produced with make_copy(), which can create a situation where the Physical objects don't have the same node associated -- see b6a118448dce974d25c1d5ae4043baa6dfe12db0
This was meant to be effected in 9e80282affb4ce19430fdd3e16d4b3ec4d49e2b8 but was not properly checked in (only the warning was shown, but the change was not actually made).
This fixes an issue where if you quickly alt-tab when the window opens, it receives a WM_ACTIVATE event and thinks it continues to be active, which causes issues with applying cursor confinement.
I think you can probably still reproduce that issue, but your reflexes have to be significantly more ninja now.
This would happen if the undecorated flag is not set; it would receive an additional offset equal to the size of the window decoration.
Fixes regression presumably caused by a968caf1d207023b2820cf4c31ae3e7324ffb218
An FM_refresh bind should not bind the multisample FBO, but the resolved one (and while we're at it, FM_refresh should not try to resolve multisamples).
This makes it possible for Panda to synthesize the cheesy accent marks for íîì on top of the dotless form, which looks better than putting them on top of the dotted i.
* Passing a Python subclass of a C++ class now works, the extra Python stuff isn't just discarded
* EventParameter objects are no longer automagically unwrapped - there's no more reason to pass an EventParameter to this method anyway, and it might be unexpected if it is treated specially.
We can't call PyErr_Restore() without a valid thread state, which won't exist in a custom thread if we just called PyGILState_Release(). Not sure how this has ever worked.
This matches the behaviour of asyncio. It schedules with the current task's manager and chain. If no current manager is found, it prints a warning. (The user can just add the coroutine to a task manager themselves and pass the resulting task into gather() if needed.)
See discussion here:
https://discourse.panda3d.org/t/task-gather-does-not-seem-to-work/27313