diff options
author | Lars Knoll <lars.knoll@qt.io> | 2019-12-17 09:29:31 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-01-14 14:54:02 +0100 |
commit | f215d00f601f66c15e0d4b2951223bc6f7e3ea5e (patch) | |
tree | 06babb596c69b7ffc103f2708848d59c36507dfd /src/qml/jsruntime/qv4arraybuffer_p.h | |
parent | 82030ac616821b6ec614112b74e6e2f46b808c17 (diff) |
Make QtQml work with the latest changes in qtbase
Adjust the code to work with the new QString and QVector data
structures that have inlined size and data pointers.
Fix a large bunch of compiler warnings from QFlags.
Update dependencies for qtbase and qtsvg
Change-Id: Iba237aed90c140b822e0cf501b9fb7156ec27c2d
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4arraybuffer_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4arraybuffer_p.h | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/qml/jsruntime/qv4arraybuffer_p.h b/src/qml/jsruntime/qv4arraybuffer_p.h index 8344fa2554..1873c41261 100644 --- a/src/qml/jsruntime/qv4arraybuffer_p.h +++ b/src/qml/jsruntime/qv4arraybuffer_p.h @@ -52,6 +52,7 @@ #include "qv4object_p.h" #include "qv4functionobject_p.h" +#include <QtCore/qarraydatapointer.h> QT_BEGIN_NAMESPACE @@ -71,12 +72,14 @@ struct Q_QML_PRIVATE_EXPORT SharedArrayBuffer : Object { void init(size_t length); void init(const QByteArray& array); void destroy(); - QTypedArrayData<char> *data; + std::aligned_storage_t<sizeof(QArrayDataPointer<char>), alignof(QArrayDataPointer<char>)> d; + const QArrayDataPointer<char> &data() const { return *reinterpret_cast<const QArrayDataPointer<char> *>(&d); } + QArrayDataPointer<char> &data() { return *reinterpret_cast<QArrayDataPointer<char> *>(&d); } bool isShared; - uint byteLength() const { return data ? data->size : 0; } + uint byteLength() const { return data().size; } - bool isDetachedBuffer() const { return !data; } + bool isDetachedBuffer() const { return data().isNull(); } bool isSharedArrayBuffer() const { return isShared; } }; @@ -90,9 +93,7 @@ struct Q_QML_PRIVATE_EXPORT ArrayBuffer : SharedArrayBuffer { isShared = false; } void detachArrayBuffer() { - if (data && !data->ref.deref()) - QTypedArrayData<char>::deallocate(data); - data = nullptr; + data().clear(); } }; @@ -124,11 +125,11 @@ struct Q_QML_PRIVATE_EXPORT SharedArrayBuffer : Object QByteArray asByteArray() const; uint byteLength() const { return d()->byteLength(); } - char *data() { Q_ASSERT(d()->data); return d()->data->data(); } - const char *constData() { Q_ASSERT(d()->data); return d()->data->data(); } + char *data() { return d()->data()->data(); } + const char *constData() { return d()->data()->data(); } - bool isShared() { return d()->data->ref.isShared(); } - bool isDetachedBuffer() const { return !d()->data; } + bool isShared() { return d()->data()->isShared(); } + bool isDetachedBuffer() const { return d()->data().isNull(); } bool isSharedArrayBuffer() const { return d()->isShared; } }; @@ -140,11 +141,11 @@ struct Q_QML_PRIVATE_EXPORT ArrayBuffer : SharedArrayBuffer QByteArray asByteArray() const; uint byteLength() const { return d()->byteLength(); } - char *data() { detach(); return d()->data ? d()->data->data() : nullptr; } + char *data() { if (d()->data().needsDetach()) detach(); return d()->data().data(); } // ### is that detach needed? - const char *constData() { detach(); return d()->data ? d()->data->data() : nullptr; } + const char *constData() const { return d()->data().data(); } - bool isShared() { return d()->data && d()->data->ref.isShared(); } + bool isShared() { return d()->data()->isShared(); } void detach(); void detachArrayBuffer() { d()->detachArrayBuffer(); } }; |