summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/serialization/qtextstream_p.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/corelib/serialization/qtextstream_p.h b/src/corelib/serialization/qtextstream_p.h
index 7d6889aa70..79643de35d 100644
--- a/src/corelib/serialization/qtextstream_p.h
+++ b/src/corelib/serialization/qtextstream_p.h
@@ -70,8 +70,13 @@ public:
inline void setupDevice(QTextStream *stream, QIODevice *device)
{
disconnect();
- if (device)
- connect(device, SIGNAL(aboutToClose()), this, SLOT(flushStream()));
+ if (device) {
+ // Force direct connection here so that QTextStream can be used
+ // from multiple threads when the application code is handling
+ // synchronization (see also QTBUG-12055).
+ connect(device, SIGNAL(aboutToClose()), this, SLOT(flushStream()),
+ Qt::DirectConnection);
+ }
this->stream = stream;
}