diff options
| author | Ulf Hermann <ulf.hermann@qt.io> | 2021-12-07 19:02:39 +0100 |
|---|---|---|
| committer | Ulf Hermann <ulf.hermann@qt.io> | 2022-01-25 23:55:27 +0100 |
| commit | 71597472ddbe6957f47ae61b72c147846a80f16f (patch) | |
| tree | 756ce46b97f0487e86c50736abe0f74dff0dc742 /src/qml/jsruntime/qv4qobjectwrapper.cpp | |
| parent | d6eaa70859fbec0f02d15bd8e8fd6ddc360ab371 (diff) | |
Avoid ping-pong between plain pointers and QQmlRefPointer
We want to deal in QQmlRefPointer as much as possible. In particular,
assigning nullptr to a QQmlRefPointer triggers the creation of an empty
QQmlRefPointer and the assignment of that one. Provide a reset() method
to do this in a cleaner way.
In turn, make QQmlGuardedContextData::reset() private. It's really
dangerous and should not be called from outside. setContextData() is
safer but may do additional work. The only place from where reset() was
previously called in its public capacity is probably dead code, though.
Change-Id: Idb72e255dbfad6e5dd963dc76d719bb9edc10471
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4qobjectwrapper.cpp')
| -rw-r--r-- | src/qml/jsruntime/qv4qobjectwrapper.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp index 583aee7c66..e4ba9e7798 100644 --- a/src/qml/jsruntime/qv4qobjectwrapper.cpp +++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp @@ -1255,7 +1255,7 @@ void QObjectWrapper::destroyObject(bool lastCall) if (ddata && ddata->ownContext) { Q_ASSERT(ddata->ownContext.data() == ddata->context); ddata->ownContext->emitDestruction(); - ddata->ownContext = nullptr; + ddata->ownContext.reset(); ddata->context = nullptr; } // This object is notionally destroyed now @@ -1270,7 +1270,7 @@ void QObjectWrapper::destroyObject(bool lastCall) // to it. ddata->jsWrapper.clear(); if (lastCall && ddata->propertyCache) - ddata->propertyCache = nullptr; + ddata->propertyCache.reset(); } } } |
