Details
-
Bug
-
Resolution: Done
-
Not Evaluated
-
None
-
5.2.0
-
None
Description
Our application uses font rendering in threads.
All works fine, until the application exists.
Then the cleanup kicks in and executes in qfontengine_ft.cpp:
void QFreetypeFace::release(const QFontEngine::FaceId &face_id)
{
QtFreetypeData *freetypeData = qt_getFreetypeData();
if (!ref.deref()) {
if (hbFace && hbFace_destroy_func)
FT_Done_Face(face);
if(freetypeData->faces.contains(face_id))
freetypeData->faces.take(face_id);
delete this;
}
if (freetypeData->faces.isEmpty())
}
This calls FT_Done_Face, which itself will access global lists in the driver of this face.
That seems to cause problems if multiple threads do this in parallel (e.g. segfaults).
Might it be needed to guard calls to Done_Face (or the complete ::release) with some Qt-global mutex? (still that seems like a hack, as other libraries might use freetype, still...)
Attachments
Issue Links
- relates to
-
QTBUG-35688 QQuickTextEdit: Make it possible to change the text document
- Closed