diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-10-14 01:00:34 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-10-14 01:00:34 +0200 |
commit | e164d61ca8263fc4b46fdd916e1ea77c7dd2b735 (patch) | |
tree | 06c50077b8baf41b756dc1aa8021c4a9ca34a9d4 /src/gui | |
parent | 721a0e807881e4d00e752e3c3cf62427eb681dd2 (diff) | |
parent | 8d8140dffa9aa680a519b501fc5bdf08c91dd735 (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: I129dd579f92cb2592a38ca043472b45cb926ae12
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/image/qmovie.cpp | 2 | ||||
-rw-r--r-- | src/gui/image/qpnghandler.cpp | 4 | ||||
-rw-r--r-- | src/gui/kernel/qwindowsysteminterface.cpp | 6 | ||||
-rw-r--r-- | src/gui/kernel/qwindowsysteminterface_p.h | 1 | ||||
-rw-r--r-- | src/gui/text/qabstracttextdocumentlayout.cpp | 2 | ||||
-rw-r--r-- | src/gui/text/qtextdocumentlayout.cpp | 4 | ||||
-rw-r--r-- | src/gui/text/qtextformat.h | 2 | ||||
-rw-r--r-- | src/gui/text/qtextmarkdownimporter.cpp | 6 | ||||
-rw-r--r-- | src/gui/text/qtextmarkdownimporter_p.h | 2 | ||||
-rw-r--r-- | src/gui/text/qtextmarkdownwriter.cpp | 4 | ||||
-rw-r--r-- | src/gui/text/qtextodfwriter.cpp | 2 |
11 files changed, 21 insertions, 14 deletions
diff --git a/src/gui/image/qmovie.cpp b/src/gui/image/qmovie.cpp index 3e975115ab..25fce050a1 100644 --- a/src/gui/image/qmovie.cpp +++ b/src/gui/image/qmovie.cpp @@ -414,7 +414,7 @@ QFrameInfo QMoviePrivate::infoForFrame(int frameNumber) } else { // We've read all frames now. Return an end marker haveReadAll = true; - return QFrameInfo::endMarker(); + return frameNumber == greatestFrameNumber + 1 ? QFrameInfo::endMarker() : QFrameInfo(); } } } diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp index 4ab45337b0..d6caf6773a 100644 --- a/src/gui/image/qpnghandler.cpp +++ b/src/gui/image/qpnghandler.cpp @@ -174,7 +174,7 @@ public: void setGamma(float); bool writeImage(const QImage& img, int x, int y); - bool writeImage(const QImage& img, volatile int compression_in, const QString &description, int x, int y); + bool writeImage(const QImage& img, int compression_in, const QString &description, int x, int y); bool writeImage(const QImage& img) { return writeImage(img, 0, 0); } bool writeImage(const QImage& img, int compression, const QString &description) @@ -900,7 +900,7 @@ bool QPNGImageWriter::writeImage(const QImage& image, int off_x, int off_y) return writeImage(image, -1, QString(), off_x, off_y); } -bool QPNGImageWriter::writeImage(const QImage& image, volatile int compression_in, const QString &description, +bool QPNGImageWriter::writeImage(const QImage& image, int compression_in, const QString &description, int off_x_in, int off_y_in) { QPoint offset = image.offset(); diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 03be72ca30..5f61853a6d 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -617,6 +617,7 @@ bool QWindowSystemInterface::isTouchDeviceRegistered(const QTouchDevice *device) static int g_nextPointId = 1; // map from device-independent point id (arbitrary) to "Qt point" ids +QMutex QWindowSystemInterfacePrivate::pointIdMapMutex; typedef QMap<quint64, int> PointIdMap; Q_GLOBAL_STATIC(PointIdMap, g_pointIdMap) @@ -634,6 +635,8 @@ Q_GLOBAL_STATIC(PointIdMap, g_pointIdMap) */ static int acquireCombinedPointId(quint8 deviceId, int pointId) { + QMutexLocker locker(&QWindowSystemInterfacePrivate::pointIdMapMutex); + quint64 combinedId64 = (quint64(deviceId) << 32) + pointId; auto it = g_pointIdMap->constFind(combinedId64); int uid; @@ -693,6 +696,8 @@ QList<QTouchEvent::TouchPoint> } if (states == Qt::TouchPointReleased) { + QMutexLocker locker(&QWindowSystemInterfacePrivate::pointIdMapMutex); + // All points on deviceId have been released. // Remove all points associated with that device from g_pointIdMap. // (On other devices, some touchpoints might still be pressed. @@ -712,6 +717,7 @@ QList<QTouchEvent::TouchPoint> void QWindowSystemInterfacePrivate::clearPointIdMap() { + QMutexLocker locker(&QWindowSystemInterfacePrivate::pointIdMapMutex); g_pointIdMap->clear(); g_nextPointId = 1; } diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h index 540170f733..55fd181ef0 100644 --- a/src/gui/kernel/qwindowsysteminterface_p.h +++ b/src/gui/kernel/qwindowsysteminterface_p.h @@ -528,6 +528,7 @@ public: static QWaitCondition eventsFlushed; static QMutex flushEventMutex; + static QMutex pointIdMapMutex; static QAtomicInt eventAccepted; static QList<QTouchEvent::TouchPoint> diff --git a/src/gui/text/qabstracttextdocumentlayout.cpp b/src/gui/text/qabstracttextdocumentlayout.cpp index 5263ece87c..8b8f3e28ac 100644 --- a/src/gui/text/qabstracttextdocumentlayout.cpp +++ b/src/gui/text/qabstracttextdocumentlayout.cpp @@ -660,7 +660,7 @@ QTextBlock QAbstractTextDocumentLayout::blockWithMarkerAt(const QPointF &pos) co { QTextBlock block = document()->firstBlock(); while (block.isValid()) { - if (block.blockFormat().marker() != QTextBlockFormat::NoMarker) { + if (block.blockFormat().marker() != QTextBlockFormat::MarkerType::NoMarker) { QRectF blockBr = blockBoundingRect(block); QTextBlockFormat blockFmt = block.blockFormat(); QFontMetrics fm(block.charFormat().font()); diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp index 1d5afee16b..7be114adf9 100644 --- a/src/gui/text/qtextdocumentlayout.cpp +++ b/src/gui/text/qtextdocumentlayout.cpp @@ -2194,11 +2194,11 @@ void QTextDocumentLayoutPrivate::drawListItem(const QPointF &offset, QPainter *p QBrush brush = context.palette.brush(QPalette::Text); - bool marker = bl.blockFormat().marker() != QTextBlockFormat::NoMarker; + bool marker = bl.blockFormat().marker() != QTextBlockFormat::MarkerType::NoMarker; if (marker) { int adj = fontMetrics.lineSpacing() / 6; r.adjust(-adj, 0, -adj, 0); - if (bl.blockFormat().marker() == QTextBlockFormat::Checked) { + if (bl.blockFormat().marker() == QTextBlockFormat::MarkerType::Checked) { // ### Qt6: render with QStyle / PE_IndicatorCheckBox. We don't currently // have access to that here, because it would be a widget dependency. painter->setPen(QPen(painter->pen().color(), 2)); diff --git a/src/gui/text/qtextformat.h b/src/gui/text/qtextformat.h index 12f14a1555..28da0fe344 100644 --- a/src/gui/text/qtextformat.h +++ b/src/gui/text/qtextformat.h @@ -627,7 +627,7 @@ public: LineDistanceHeight = 4 }; - enum MarkerType { + enum class MarkerType { NoMarker = 0, Unchecked = 1, Checked = 2 diff --git a/src/gui/text/qtextmarkdownimporter.cpp b/src/gui/text/qtextmarkdownimporter.cpp index b96263f5fc..fe7e422923 100644 --- a/src/gui/text/qtextmarkdownimporter.cpp +++ b/src/gui/text/qtextmarkdownimporter.cpp @@ -190,8 +190,8 @@ int QTextMarkdownImporter::cbEnterBlock(int blockType, void *det) m_listItem = true; MD_BLOCK_LI_DETAIL *detail = static_cast<MD_BLOCK_LI_DETAIL *>(det); m_markerType = detail->is_task ? - (detail->task_mark == ' ' ? QTextBlockFormat::Unchecked : QTextBlockFormat::Checked) : - QTextBlockFormat::NoMarker; + (detail->task_mark == ' ' ? QTextBlockFormat::MarkerType::Unchecked : QTextBlockFormat::MarkerType::Checked) : + QTextBlockFormat::MarkerType::NoMarker; qCDebug(lcMD) << "LI"; } break; case MD_BLOCK_UL: { @@ -549,7 +549,7 @@ void QTextMarkdownImporter::insertBlock() blockFormat.setTopMargin(m_paragraphMargin); blockFormat.setBottomMargin(m_paragraphMargin); } - if (m_markerType == QTextBlockFormat::NoMarker) + if (m_markerType == QTextBlockFormat::MarkerType::NoMarker) blockFormat.clearProperty(QTextFormat::BlockMarker); else blockFormat.setMarker(m_markerType); diff --git a/src/gui/text/qtextmarkdownimporter_p.h b/src/gui/text/qtextmarkdownimporter_p.h index 1b8c2ca354..35655aff8a 100644 --- a/src/gui/text/qtextmarkdownimporter_p.h +++ b/src/gui/text/qtextmarkdownimporter_p.h @@ -128,7 +128,7 @@ private: Features m_features; QTextImageFormat m_imageFormat; QTextListFormat m_listFormat; - QTextBlockFormat::MarkerType m_markerType = QTextBlockFormat::NoMarker; + QTextBlockFormat::MarkerType m_markerType = QTextBlockFormat::MarkerType::NoMarker; bool m_needsInsertBlock = false; bool m_needsInsertList = false; bool m_listItem = false; // true from the beginning of LI to the end of the first P diff --git a/src/gui/text/qtextmarkdownwriter.cpp b/src/gui/text/qtextmarkdownwriter.cpp index cbfb092485..764c64aead 100644 --- a/src/gui/text/qtextmarkdownwriter.cpp +++ b/src/gui/text/qtextmarkdownwriter.cpp @@ -327,10 +327,10 @@ int QTextMarkdownWriter::writeBlock(const QTextBlock &block, bool wrap, bool ign break; } switch (blockFmt.marker()) { - case QTextBlockFormat::Checked: + case QTextBlockFormat::MarkerType::Checked: bullet += " [x]"; break; - case QTextBlockFormat::Unchecked: + case QTextBlockFormat::MarkerType::Unchecked: bullet += " [ ]"; break; default: diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp index 3561c185a6..0e8666565f 100644 --- a/src/gui/text/qtextodfwriter.cpp +++ b/src/gui/text/qtextodfwriter.cpp @@ -358,7 +358,7 @@ void QTextOdfWriter::writeBlock(QXmlStreamWriter &writer, const QTextBlock &bloc int precedingSpaces = 0; int exportedIndex = 0; for (int i=0; i <= fragmentText.count(); ++i) { - QChar character = fragmentText[i]; + QChar character = (i == fragmentText.count() ? QChar() : fragmentText.at(i)); bool isSpace = character.unicode() == ' '; // find more than one space. -> <text:s text:c="2" /> |