Details
Description
If a Texture is update with a higher frequency (e.g. 25 Hz) the 3D scene freezes after a while.
Debugging showed that there is a Deadlock/Racecondition between GLTexture and TextureDataManager. (See attached file)
The Patch (see gltexture.cpp_patch) fixes this deadlock by coping the data of m_dirty to a local variable dirty. After the copy, the m_dirtyFlagMutex is unlocked. For all later compares the dirty variable is used. At the end, before m_dirty = 0; the lock is relocked.
Affected Filed:
qt3d/src/render/texture/gltexture.cpp
Attachments
For Gerrit Dashboard: QTBUG-61130 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
199483,3 | Make GLTexture dirty flags atomic instead of using a mutex | 5.9 | qt/qt3d | Status: MERGED | +2 | 0 |
200579,1 | Make GLTexture dirty flags atomic instead of using a mutex | dev | qt/qt3d | Status: ABANDONED | 0 | 0 |