Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/painting/qwindowsurface_x11.cpp

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtGui module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    9595{
    9696#ifndef QT_NO_XRENDER
     97    Q_ASSERT(!d_ptr->device.isNull());
     98
    9799    if (d_ptr->translucentBackground) {
    98100        if (d_ptr->device.depth() != 32)
    99             static_cast<QX11PixmapData *>(d_ptr->device.data_ptr())->convertToARGB32();
     101            static_cast<QX11PixmapData *>(d_ptr->device.data_ptr().data())->convertToARGB32();
    100102        ::Picture src = X11->getSolidFill(d_ptr->device.x11Info().screen(), Qt::transparent);
    101103        ::Picture dst = d_ptr->device.x11PictureHandle();
     
    129131//         qDebug() << "XSetClipRectangles";
    130132//         for  (int i = 0; i < num; ++i)
    131 //             qDebug() << " " << i << rects[i].x << rects[i].x << rects[i].y << rects[i].width << rects[i].height;
    132     XSetClipRectangles(X11->display, gc, 0, 0, rects, num, YXBanded);
     133//             qDebug() << ' ' << i << rects[i].x << rects[i].x << rects[i].y << rects[i].width << rects[i].height;
     134    if (num != 1)
     135        XSetClipRectangles(X11->display, gc, 0, 0, rects, num, YXBanded);
    133136    XCopyArea(X11->display, d_ptr->device.handle(), widget->handle(), gc,
    134137              br.x() + offset.x(), br.y() + offset.y(), br.width(), br.height(), wbr.x(), wbr.y());
     138    if (num != 1)
     139        XSetClipMask(X11->display, gc, XNone);
    135140}
    136141
     
    140145
    141146    const QSize size = rect.size();
    142     if (d_ptr->device.size() == size)
     147
     148    if (d_ptr->device.size() == size || size.width() <= 0 || size.height() <= 0)
    143149        return;
    144150#ifndef QT_NO_XRENDER
     
    154160
    155161        QX11PixmapData *oldData = static_cast<QX11PixmapData *>(d_ptr->device.pixmapData());
    156         Q_ASSERT(oldData);
    157         if (!oldData->uninit && hasStaticContents()) {
     162
     163        if (oldData && !(oldData->flags & QX11PixmapData::Uninitialized) && hasStaticContents()) {
    158164            // Copy the content of the old pixmap into the new one.
    159165            QX11PixmapData *newData = new QX11PixmapData(QPixmapData::PixmapType);
     
    176182                      qMin(boundingRect.height(), size.height()), dx, dy);
    177183            XFreeGC(X11->display, tmpGc);
    178             newData->uninit = false;
     184            newData->flags &= ~QX11PixmapData::Uninitialized;
    179185
    180186            d_ptr->device = QPixmap(newData);
     
    184190    }
    185191
    186     if (gc)
     192    if (gc) {
    187193        XFreeGC(X11->display, gc);
    188     gc = XCreateGC(X11->display, d_ptr->device.handle(), 0, 0);
    189     XSetGraphicsExposures(X11->display, gc, False);
     194        gc = 0;
     195    }
     196    if (!d_ptr->device.isNull()) {
     197        gc = XCreateGC(X11->display, d_ptr->device.handle(), 0, 0);
     198        XSetGraphicsExposures(X11->display, gc, False);
     199    }
    190200}
    191201
Note: See TracChangeset for help on using the changeset viewer.