You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw-tes3mp/components
scrawl 115e563a7a Fix race conditions caused by Array <-> GLBufferObject interactions (Bug #3580)
The first part of the fix is to assign VBO/EBO's upon loading the array in the Nif reader. This avoids triggering the 'addVertexBufferObjectIfRequired' code path in osg::Geometry which has the race condition when two threads add the same Array at the same time. Essentially, we want the Arrays to be 'const' when they come out of the Nif reader.

The second part of the fix is to make sure not to create empty arrays in the Nif reader (importantly, not assigning a VBO to the empty array). This empty array would be deleted when the NIFFile is cleaned up, and the detachment of the VBO assigned to it (which is still in use by other arrays) would cause threading issues.

This rare crash bug was first introduced with commit a7c5beb7c5. When using OSG dev version 3.5 the crashes were a little more prevalent, because 'addVertexBufferObjectIfRequired' in osg::Geometry is now used even when VBO's are disabled (as part of the VAO support changes).
8 years ago
..
bsa Mark thread safe methods in BsaFile 9 years ago
compiler Fix typo in script opcode (Fixes #3583) 8 years ago
config Launcher: ensure to clear previous settings when reloading settings 9 years ago
contentselector Fix shadowing warnings 8 years ago
esm Slight adjustments to disintegration fix 8 years ago
esmterrain Add terrain parallax mapping 9 years ago
fallback Relocate escape-related code to new files escape.hpp and escape.cpp. 9 years ago
files [macOS] Move all configs & resources into app bundles 8 years ago
fontloader Fix shadowing warnings 8 years ago
interpreter Fix shadowing warnings 8 years ago
loadinglistener LoadingScreen: add support for important labels 9 years ago
misc Add virtual destructors 8 years ago
myguiplatform optimize OSGVertexBuffer by double buffering the vertex array instead of recreating it on every modification 8 years ago
nif Fix race conditions caused by Array <-> GLBufferObject interactions (Bug #3580) 8 years ago
nifbullet Fix race conditions caused by Array <-> GLBufferObject interactions (Bug #3580) 8 years ago
nifosg Fix race conditions caused by Array <-> GLBufferObject interactions (Bug #3580) 8 years ago
process OSX build fix 10 years ago
resource Add missing use plugin macro for static build 8 years ago
sceneutil Check if the bounding box changed before calling dirtyBound() 8 years ago
sdlutil Handle SDL event 0x304 by doing nothing (#3670) 8 years ago
settings Fix typo 8 years ago
shader Fix shadowing warnings 8 years ago
terrain Fix shadowing warnings 8 years ago
to_utf8 Fix typo in a comment 9 years ago
translation Fix cppcheck issues 10 years ago
version Move OpenMW version information to a textfile instead of compiling it in 10 years ago
vfs Fix clang analyzer warnings 9 years ago
widgets Don't attempt to create quest log buttons if textures are unavailable (Fixes #3063) 9 years ago
CMakeLists.txt Changed missing library dependencies to simple fix 8 years ago
doc.hpp second set of additional doxygen comments 14 years ago