- DisplayInformation now gives the list of display modes returned by XRRGetScreenResources if RandR 1.2 is supported, which is apparently more reliable than the previous XRRSizes/XRRRates approach.
- Switching fullscreen on X11 to the current resolution on the CRTC that the monitor is on will make the window cover the CRTC properly, rather than forcing the window to have an origin of (0, 0).
- Passing in the pipe's display width/height is commonly done to go fullscreen at native res, but this may not correspond to a real display resolution. It now detects when this is done, and interprets this as "go fullscreen at the native resolution on the current CRTC".
Fixes#575
This is done by collecting bounding volumes for each camera in a scene, and then only rendering a shadow camera if at least one of those bounding volumes overlaps with the shadow camera bounding volume.
Closes#560
This is an extension of the fix in 9a40febdb9, but that only applied when the light was passed to the shader via LightAttrib, and not via shader inputs.
ParamNodePath is not the ideal place to put this, but it's convenient (and probably more efficient than putting it into ShaderAttrib).
We actually need to leak this lock, because we need to call this at static destruction time, and we can't guarantee static destruction order.
This reverts commit afed80e83a.
See #550. Now that we use the Vista API for condition variables, the only place where the distinction is still relevant is Windows XP, and it's just not worth it for that one corner case.
Checks if the value of Config.prc for `depth-bits` is `1` and sets it
manually to 24.
This prevents getting a 16 bit depth buffer on macos
Intended to address #501Closes#551
This uses SRWLock on Vista and above, and uses a hand-rolled implementation on Windows XP that uses Events (and a spinlock, if this is a multi-core system).
Since SRWLocks aren't recursive, ReMutexWin32Impl has been added to implement recursive mutices, using old-fashioned critical sections.
MutexImpl now has a constexpr constructor on all implementations.
As far as I know, none of the implementations strictly require this, and this may cause the waiting thread to wake up only for it to immediately have to wait for the lock again.
This change brings our implementation closer to C++11 std::condition_variable semantics.
This is not intended to be used just yet in 1.10, but already added in preparation for changes on master to support #546. I'm just allowing Panda to parse the syntax ahead of time to reduce potential .egg incompatiblities.
Need to find a better solution for the interior point calculation when the capsule is hitting a polygon edge with the cylindrical part. The current approach pushes the capsule back too much.