summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/directfb/qdirectfbconvenience.h
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2011-09-19 00:57:45 +0200
committerQt by Nokia <qt-info@nokia.com>2011-10-21 16:54:45 +0200
commit500dc2a6f888e283c6d40730bdf7c2998ee0437b (patch)
treeeb1803d6ac87fb68f211fb2ffadd59cff805c0dc /src/plugins/platforms/directfb/qdirectfbconvenience.h
parent405894fc39cdab937c38b917adf4e8d390f80790 (diff)
[directfb] Introduce the QDirectFBPointer from QWS/gfxdrivers
Introduce QDirectFBPointer and use it throughout the code to fix various resource leaks in the DirectFB backend. Fix the surface ownership of the IDirectFBSurface in the Blittable/BackingStore code. Change-Id: I0d4572eaab80b3558e644f26d76222461bf37bbb Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Diffstat (limited to 'src/plugins/platforms/directfb/qdirectfbconvenience.h')
-rw-r--r--src/plugins/platforms/directfb/qdirectfbconvenience.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/plugins/platforms/directfb/qdirectfbconvenience.h b/src/plugins/platforms/directfb/qdirectfbconvenience.h
index 93d47f3644..e7c9378ece 100644
--- a/src/plugins/platforms/directfb/qdirectfbconvenience.h
+++ b/src/plugins/platforms/directfb/qdirectfbconvenience.h
@@ -81,4 +81,29 @@ private:
friend class QDirectFbIntegration;
};
+template <typename T> struct QDirectFBInterfaceCleanupHandler
+{
+ static void cleanup(T *t)
+ {
+ if (!t)
+ return;
+ t->Release(t);
+ }
+};
+
+template <typename T>
+class QDirectFBPointer : public QScopedPointer<T, QDirectFBInterfaceCleanupHandler<T> >
+{
+public:
+ QDirectFBPointer(T *t = 0)
+ : QScopedPointer<T, QDirectFBInterfaceCleanupHandler<T> >(t)
+ {}
+
+ T** outPtr()
+ {
+ this->reset(0);
+ return &this->d;
+ }
+};
+
#endif // QDIRECTFBCONVENIENCE_H