src/gui/image/qpixmap_x11.cpp
branchRCL_3
changeset 8 3f74d0d4af4c
parent 4 3b1da2848fc7
child 14 c0432d11811c
equal deleted inserted replaced
6:dee5afe5301f 8:3f74d0d4af4c
    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);