equal
deleted
inserted
replaced
66 #include <private/qpaintengine_x11_p.h> |
66 #include <private/qpaintengine_x11_p.h> |
67 #include <private/qt_x11_p.h> |
67 #include <private/qt_x11_p.h> |
68 #include "qx11info_x11.h" |
68 #include "qx11info_x11.h" |
69 #include <private/qdrawhelper_p.h> |
69 #include <private/qdrawhelper_p.h> |
70 #include <private/qimage_p.h> |
70 #include <private/qimage_p.h> |
|
71 #include <private/qimagepixmapcleanuphooks_p.h> |
71 |
72 |
72 #include <stdlib.h> |
73 #include <stdlib.h> |
73 |
74 |
74 #if defined(Q_CC_MIPS) |
75 #if defined(Q_CC_MIPS) |
75 # define for if(0){}else for |
76 # define for if(0){}else for |
1226 XFreeGC(X11->display, gc); |
1227 XFreeGC(X11->display, gc); |
1227 } |
1228 } |
1228 |
1229 |
1229 QX11PixmapData::~QX11PixmapData() |
1230 QX11PixmapData::~QX11PixmapData() |
1230 { |
1231 { |
|
1232 // Cleanup hooks have to be called before the handles are freed |
|
1233 if (is_cached) { |
|
1234 QImagePixmapCleanupHooks::executePixmapDataDestructionHooks(this); |
|
1235 is_cached = false; |
|
1236 } |
|
1237 |
1231 release(); |
1238 release(); |
1232 } |
1239 } |
1233 |
1240 |
1234 void QX11PixmapData::release() |
1241 void QX11PixmapData::release() |
1235 { |
1242 { |
1236 delete pengine; |
1243 delete pengine; |
1237 pengine = 0; |
1244 pengine = 0; |
1238 |
1245 |
1239 if (!X11) |
1246 if (!X11) { |
|
1247 #ifndef QT_NO_DEBUG |
|
1248 qWarning("~QX11PixmapData(): QPixmap objects must be destroyed before the QApplication" |
|
1249 " object, otherwise the native pixmap object will be leaked."); |
|
1250 #endif |
1240 return; |
1251 return; |
|
1252 } |
1241 |
1253 |
1242 if (x11_mask) { |
1254 if (x11_mask) { |
1243 #ifndef QT_NO_XRENDER |
1255 #ifndef QT_NO_XRENDER |
1244 if (mask_picture) |
1256 if (mask_picture) |
1245 XRenderFreePicture(X11->display, mask_picture); |
1257 XRenderFreePicture(X11->display, mask_picture); |