diff options
author | Matt Broadstone <mbroadstone@devonit.com> | 2013-08-01 14:26:22 -0400 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-12 19:41:05 +0200 |
commit | ade0d8361c130ef46b4f2ebe2c8e9999740b93d2 (patch) | |
tree | 407df604749c6a277e3b19a257559a2547c2d369 /src/corelib/tools/qscopedpointer.h | |
parent | b3a56454c35e14217d62ea95b3244f6c37b2e88b (diff) |
add QScopedPointerDeleteLater, a custom deleter for QObjects
This is a custom deleter for QObjects that are participating in an event
loop (e.g. waiting for signals to complete a task), which need to be
deleted using deleteLater() rather than just delete.
Change-Id: I3084ea28a6829a299c7400006c617fc23cf15160
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools/qscopedpointer.h')
-rw-r--r-- | src/corelib/tools/qscopedpointer.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h index c4a148c4e4..dba37dae23 100644 --- a/src/corelib/tools/qscopedpointer.h +++ b/src/corelib/tools/qscopedpointer.h @@ -83,6 +83,17 @@ struct QScopedPointerPodDeleter static inline void cleanup(void *pointer) { if (pointer) free(pointer); } }; +#ifndef QT_NO_QOBJECT +template <typename T> +struct QScopedPointerObjectDeleteLater +{ + static inline void cleanup(T *pointer) { if (pointer) pointer->deleteLater(); } +}; + +class QObject; +typedef QScopedPointerObjectDeleteLater<QObject> QScopedPointerDeleteLater; +#endif + template <typename T, typename Cleanup = QScopedPointerDeleter<T> > class QScopedPointer { |