diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-07-09 03:03:19 +0200 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2019-07-11 14:22:07 +0200 |
commit | 9b6078281570f473d90511f81fdedfad26d0b0c2 (patch) | |
tree | ecf3ce3b6545482c74fa4f09b57c4ad2317e741d | |
parent | 79dff64a04486f7c599b8442a74c1b54b72137c1 (diff) | |
parent | fb7cdefef82d34f7bdbf98ec9187cc05280c39ae (diff) |
Merge "Merge remote-tracking branch 'origin/5.12' into 5.13"
-rw-r--r-- | dist/changes-5.12.4 | 71 | ||||
-rw-r--r-- | src/remoteobjects/qremoteobjectnode.cpp | 2 | ||||
-rw-r--r-- | tests/auto/modelview/tst_modelview.cpp | 4 |
3 files changed, 72 insertions, 5 deletions
diff --git a/dist/changes-5.12.4 b/dist/changes-5.12.4 new file mode 100644 index 0000000..e415add --- /dev/null +++ b/dist/changes-5.12.4 @@ -0,0 +1,71 @@ +Qt 5.12.4 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.12.0 through 5.12.3 under most +conditions. There may be exceptions if you are using Qt Remote Objects +between proesses or devices running different versions Qt. The different +versions of Qt must be running compatible versions of QtRO's protocol. + +Changes to the Qt Remote Objects protocol are documented online: + +https://doc.qt.io/qt-5/qtremoteobjects-compatibility.html + +The QtRO protocol has been updated in Qt 5.12.4 and Qt 5.13.0 to 1.3. + +Background: Qt's QueuedConnections work by copying signal parameters so +the copy can be held and then later processed in another threads +eventloop, allowing the original data to be changed in the originating +thread. + +Qt Remote Objects leverages this capability and sends that data from a +QObject in one process to a QObject in another. There is a specific +protocol for this, as both sides need to interpret what is sent the +same way. For example, there are Invoke and PropertyChanged packets +exchanged. In addition to this, both sides need to know how to encode and +decode all types shared. This type awareness is easy to ensure if the +repc compiler is used to generate the headers for all sides. + +However, there are use cases where this isn't possible. In these cases +QtRO will send the type (metaobject) information as well, allowing the +receiving side to generate the required type information at runtime for +certain types (PODs and enumerations). + +There were issues found in this type serialization code that required a +change to the protocol. There are a number of commits going into both +Qt 5.13.0 and Qt 5.12.4 with fixes. This means that you will not be able +to use Qt Remote Objects on a device using Qt 5.12.3 or earlier and +communicate to another device using Qt 5.12.4/5.13.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +https://doc.qt.io/qt-5/index.html + +The Qt version 5.12 series is binary compatible with the 5.11.x series. +Applications compiled for 5.11 will continue to run with 5.12 as long as +the protocol change noted above is taken into account. + +**************************************************************************** +* Important Behavior Changes * +**************************************************************************** + + - Qt Remote Objects uses an internal protocol to pass data between + processes and/or devices. The same protocol version needs to be used on + all sides. The version was bumped from 1.2 to 1.3 in this release, + fixing potential crashes (see QTBUG-75017). If there is a mismatch, the + connecting node will output a warning and the host node will not send + any data. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +The following fixes were part of the above protocol change and are in +5.12.4 and 5.13.0. + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + + - QTBUG-75017: QtRO processes can crash if type registration is incorrect + - QTBUG-75056: Correctly handle QVariant properties on the replica side + - QTBUG-74084: QT remote objects false conversion warning in case of + QVariant property diff --git a/src/remoteobjects/qremoteobjectnode.cpp b/src/remoteobjects/qremoteobjectnode.cpp index 127ed9d..9eec443 100644 --- a/src/remoteobjects/qremoteobjectnode.cpp +++ b/src/remoteobjects/qremoteobjectnode.cpp @@ -1249,7 +1249,7 @@ void QRemoteObjectNodePrivate::onClientRead(QObject *obj) } case Handshake: if (rxName != QtRemoteObjects::protocolVersion) { - qWarning() << "*** Protocol Mismatch, closing connection ***. Got" << rxObjects << "expected" << QtRemoteObjects::protocolVersion; + qWarning() << "*** Protocol Mismatch, closing connection ***. Got" << rxName << "expected" << QtRemoteObjects::protocolVersion; setLastError(QRemoteObjectNode::ProtocolMismatch); connection->close(); } else { diff --git a/tests/auto/modelview/tst_modelview.cpp b/tests/auto/modelview/tst_modelview.cpp index 1512f10..2a8ddcb 100644 --- a/tests/auto/modelview/tst_modelview.cpp +++ b/tests/auto/modelview/tst_modelview.cpp @@ -89,10 +89,6 @@ struct InsertedRow : m_index(index) , m_start(start) , m_end(end){} - InsertedRow(const InsertedRow &other) - : m_index(other.m_index) - , m_start(other.m_start) - , m_end(other.m_end){} bool match(const QList<QVariant> &signal) const { if (signal.size() != 3) |