Merge branch 'release/1.10.x'

This commit is contained in:
rdb 2019-05-14 14:41:43 +02:00
commit 2e9395b766
7 changed files with 71 additions and 12 deletions

View File

@ -24,7 +24,7 @@ Installing Panda3D
================== ==================
The latest Panda3D SDK can be downloaded from The latest Panda3D SDK can be downloaded from
[this page](https://www.panda3d.org/download/sdk-1-10-2/). [this page](https://www.panda3d.org/download/sdk-1-10-3/).
If you are familiar with installing Python packages, you can use If you are familiar with installing Python packages, you can use
the following comand: the following comand:
@ -64,8 +64,8 @@ depending on whether you are on a 32-bit or 64-bit system, or you can
[click here](https://github.com/rdb/panda3d-thirdparty) for instructions on [click here](https://github.com/rdb/panda3d-thirdparty) for instructions on
building them from source. building them from source.
https://www.panda3d.org/download/panda3d-1.10.2/panda3d-1.10.2-tools-win64.zip https://www.panda3d.org/download/panda3d-1.10.3/panda3d-1.10.3-tools-win64.zip
https://www.panda3d.org/download/panda3d-1.10.2/panda3d-1.10.2-tools-win32.zip https://www.panda3d.org/download/panda3d-1.10.3/panda3d-1.10.3-tools-win32.zip
After acquiring these dependencies, you may simply build Panda3D from the After acquiring these dependencies, you may simply build Panda3D from the
command prompt using the following command. (Change `14.1` to `14` if you are command prompt using the following command. (Change `14.1` to `14` if you are
@ -135,7 +135,7 @@ macOS
----- -----
On macOS, you will need to download a set of precompiled thirdparty packages in order to On macOS, you will need to download a set of precompiled thirdparty packages in order to
compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.10.2/panda3d-1.10.2-tools-mac.tar.gz). compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.10.3/panda3d-1.10.3-tools-mac.tar.gz).
After placing the thirdparty directory inside the panda3d source directory, After placing the thirdparty directory inside the panda3d source directory,
you may build Panda3D using a command like the following: you may build Panda3D using a command like the following:

View File

@ -239,7 +239,7 @@ class FilterManager(DirectObject):
return quad return quad
def renderQuadInto(self, name="filter-stage", mul=1, div=1, align=1, depthtex=None, colortex=None, auxtex0=None, auxtex1=None): def renderQuadInto(self, name="filter-stage", mul=1, div=1, align=1, depthtex=None, colortex=None, auxtex0=None, auxtex1=None, fbprops=None):
""" Creates an offscreen buffer for an intermediate """ Creates an offscreen buffer for an intermediate
computation. Installs a quad into the buffer. Returns computation. Installs a quad into the buffer. Returns
@ -253,6 +253,9 @@ class FilterManager(DirectObject):
depthbits = bool(depthtex != None) depthbits = bool(depthtex != None)
if fbprops is not None:
buffer = self.createBuffer(name, winx, winy, texgroup, depthbits, fbprops=fbprops)
else:
buffer = self.createBuffer(name, winx, winy, texgroup, depthbits) buffer = self.createBuffer(name, winx, winy, texgroup, depthbits)
if (buffer == None): if (buffer == None):

View File

@ -1679,16 +1679,18 @@ class ShowBase(DirectObject.DirectObject):
return self.mouseWatcherNode.getModifierButtons().isDown( return self.mouseWatcherNode.getModifierButtons().isDown(
KeyboardButton.meta()) KeyboardButton.meta())
def attachInputDevice(self, device, prefix=None, gui=False): def attachInputDevice(self, device, prefix=None, watch=False):
""" """
This function attaches an input device to the data graph, which will This function attaches an input device to the data graph, which will
cause the device to be polled and generate events. If a prefix is cause the device to be polled and generate events. If a prefix is
given and not None, it is used to prefix events generated by this given and not None, it is used to prefix events generated by this
device, separated by a hyphen. device, separated by a hyphen.
The gui argument can be set to True (as of Panda3D 1.10.3) to set up The watch argument can be set to True (as of Panda3D 1.10.3) to set up
the default MouseWatcher to receive inputs from this device, allowing the default MouseWatcher to receive inputs from this device, allowing
it to control user interfaces. it to be polled via mouseWatcherNode and control user interfaces.
Setting this to True will also make it generate unprefixed events,
regardless of the specified prefix.
If you call this, you should consider calling detachInputDevice when If you call this, you should consider calling detachInputDevice when
you are done with the device or when it is disconnected. you are done with the device or when it is disconnected.
@ -1700,7 +1702,7 @@ class ShowBase(DirectObject.DirectObject):
idn = self.dataRoot.attachNewNode(InputDeviceNode(device, device.name)) idn = self.dataRoot.attachNewNode(InputDeviceNode(device, device.name))
# Setup the button thrower to generate events for the device. # Setup the button thrower to generate events for the device.
if prefix is not None or not gui: if prefix is not None or not watch:
bt = idn.attachNewNode(ButtonThrower(device.name)) bt = idn.attachNewNode(ButtonThrower(device.name))
if prefix is not None: if prefix is not None:
bt.node().setPrefix(prefix + '-') bt.node().setPrefix(prefix + '-')
@ -1709,7 +1711,7 @@ class ShowBase(DirectObject.DirectObject):
assert self.notify.debug("Attached input device {0} with prefix {1}".format(device, prefix)) assert self.notify.debug("Attached input device {0} with prefix {1}".format(device, prefix))
self.__inputDeviceNodes[device] = idn self.__inputDeviceNodes[device] = idn
if gui: if watch:
idn.node().addChild(self.mouseWatcherNode) idn.node().addChild(self.mouseWatcherNode)
def detachInputDevice(self, device): def detachInputDevice(self, device):

View File

@ -1,3 +1,40 @@
------------------------ RELEASE 1.10.3 -----------------------
This is another bugfix release that addresses a variety of issues
in 1.10.2 and further improves the stability.
* Fix crash when unplugging certain devices on macOS
* Fix crash on macOS when using RIME input
* Fix logging issues/crashes in apps deployed with Python 2.7
* Fix issues when starting in fullscreen on Linux/X11
* Fix mapping of several gamepads including Trust GXT 24
* Fix Linux crash when no input devices are present
* Unbreak support for matrix arrays in vertex data in OpenGL
* Allow creating multisample FBO in OpenGL with non-MS host window
* Support playing and looping compressed Ogg and WAV audio files
* Fix generation of CollisionBox for transformed geometry in .egg
* Fix Bullet rigid body transform not updating after reparenting
* Fix sporadic color scales with lighting and custom GLSL shader
* Prevent faulty shaders from shutting down GSG on some drivers
* Allow None as either argument to OdeJoint.attach()
* Fix BufferViewer when main window is not opened right away
* Properly detect extension of pz/gz compressed video/audio files
* Fix for invalid behavior of SparseArray methods to clear bits
* FilterManager now allows overriding framebuffer properties
* Fix detection of core-only OpenGL profile on some drivers
* Add gl-forward-compatible config var for OpenGL context creation
* Add paste-emit-keystrokes variable to disable Ctrl+V on Windows
* Fix in-place |= operator on Panda types (such as SparseArray)
* Fix rare FFmpeg "bad src image pointers" errors after seek
* Fix uses of types.InstanceType in some obscure direct functions
* Fix capsule-into-sphere collision test in degenerate case
* KeyboardButton.ascii_key now also accepts a str character
* Fix errors in various Tkinter DIRECT widgets
* Expose save_egg_file/save_egg_data functions in Python API
* Fix assertion error in BoundingBox.set_min_max
* Fix typo in CollisionTraverser.respect_prev_transform property
* Properly install Python bindings when building FreeBSD installer
------------------------ RELEASE 1.10.2 ----------------------- ------------------------ RELEASE 1.10.2 -----------------------
This release fixes several more bugs, including a few regressions This release fixes several more bugs, including a few regressions

View File

@ -359,6 +359,20 @@ do_transform_changed() {
} }
} }
/**
*
*/
void BulletRigidBodyNode::
parents_changed() {
if (_motion.sync_disabled()) return;
if (get_num_parents() > 0) {
LightMutexHolder holder(BulletWorld::get_global_lock());
do_transform_changed();
}
}
/** /**
* *
*/ */

View File

@ -112,6 +112,7 @@ public:
void do_sync_b2p(); void do_sync_b2p();
protected: protected:
virtual void parents_changed();
virtual void transform_changed(); virtual void transform_changed();
private: private:

View File

@ -755,7 +755,9 @@ do_poll() {
PT(FfmpegBuffer) frame = do_alloc_frame(); PT(FfmpegBuffer) frame = do_alloc_frame();
nassertr(frame != nullptr, false); nassertr(frame != nullptr, false);
_lock.release(); _lock.release();
if (seek_frame != _begin_frame) {
advance_to_frame(seek_frame); advance_to_frame(seek_frame);
}
if (_frame_ready) { if (_frame_ready) {
export_frame(frame); export_frame(frame);
_lock.acquire(); _lock.acquire();