Apparently, the use of glColorPointer with GL_BGRA causes these cards to display garbled vertex colors (tested with RX 5700 XT). This bug doesn't seem to affect glVertexAttribPointer.
The "fix" is to just disable packed-dabc colors if these cards are detected. This may cause a minor performance regression since the vertex data now needs to be munged--possibly even unnecessarily, if shaders are used, but this effect is likely very minor (and can be addressed in other ways).
Fixes#981
This was called, among other things, by the egg-unify process, which could ruin the strip cut index.
At the same time, I've reimplemented the indexed case for offset_vertices() to make it a little bit more efficient.
Fixes#1122
Previously, calling that without storing a temporary object would cause the WindowProperties to go out of scope and the return value to point to random memory.
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.
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