Ignore:
Timestamp:
Mar 8, 2010, 12:52:58 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.2 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp

    r561 r651  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
     
    104104    void blit(const QRectF &dest, IDirectFBSurface *surface, const QRectF &src);
    105105
     106    inline bool supportsStretchBlit() const;
     107
    106108    inline void updateClip();
    107109    virtual void systemStateChanged();
     
    527529    if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedBlits)
    528530        || (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported)
    529         || d->clipType == QDirectFBPaintEnginePrivate::ComplexClip
     531        || (d->clipType == QDirectFBPaintEnginePrivate::ComplexClip)
     532        || (!d->supportsStretchBlit() && state()->matrix.mapRect(r).size() != sr.size())
    530533#ifndef QT_DIRECTFB_IMAGECACHE
    531         || QDirectFBScreen::getSurfacePixelFormat(image.format()) == DSPF_UNKNOWN
     534        || (QDirectFBScreen::getSurfacePixelFormat(image.format()) == DSPF_UNKNOWN)
    532535#elif defined QT_NO_DIRECTFB_PREALLOCATED
    533         || QDirectFBPaintEnginePrivate::cacheCost(image) > imageCache.maxCost()
     536        || (QDirectFBPaintEnginePrivate::cacheCost(image) > imageCache.maxCost())
    534537#endif
    535538        )
     
    574577        QDirectFBPixmapData *dfbData = static_cast<QDirectFBPixmapData*>(data);
    575578        if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedBlits)
    576                || (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported)
    577                || d->clipType == QDirectFBPaintEnginePrivate::ComplexClip
    578                || (state()->renderHints & QPainter::SmoothPixmapTransform
    579                    && state()->matrix.mapRect(r).size() != sr.size())) {
     579            || (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported)
     580            || (d->clipType == QDirectFBPaintEnginePrivate::ComplexClip)
     581            || (!d->supportsStretchBlit() && state()->matrix.mapRect(r).size() != sr.size())) {
    580582            RASTERFALLBACK(DRAW_PIXMAP, r, pixmap.size(), sr);
    581583            const QImage *img = dfbData->buffer();
     
    607609    } else if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedBlits)
    608610               || (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported)
    609                || d->clipType == QDirectFBPaintEnginePrivate::ComplexClip
    610                || (state()->renderHints & QPainter::SmoothPixmapTransform && state()->matrix.isScaling())) {
     611               || (d->clipType == QDirectFBPaintEnginePrivate::ComplexClip)
     612               || (!d->supportsStretchBlit() && state()->matrix.isScaling())) {
    611613        RASTERFALLBACK(DRAW_TILED_PIXMAP, r, pixmap.size(), offset);
    612614        QPixmapData *pixmapData = pixmap.pixmapData();
     
    733735            if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedBlits)
    734736                || (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported)
    735                 || (state()->renderHints & QPainter::SmoothPixmapTransform && state()->matrix.isScaling())) {
     737                || (!d->supportsStretchBlit() && state()->matrix.isScaling())) {
    736738                break;
    737739            }
     
    758760    Q_D(QDirectFBPaintEngine);
    759761    if ((d->transformationType & QDirectFBPaintEnginePrivate::Matrix_RectsUnsupported)
    760         || d->clipType == QDirectFBPaintEnginePrivate::ComplexClip
     762        || (d->clipType == QDirectFBPaintEnginePrivate::ComplexClip)
    761763        || !d->testCompositionMode(0, 0, &color)) {
    762764        RASTERFALLBACK(FILL_RECT, rect, color, VOID_ARG());
     
    10501052        result = surface->Blit(surface, s, &sRect, dr.x(), dr.y());
    10511053    } else {
     1054        Q_ASSERT(supportsStretchBlit());
    10521055        const DFBRectangle dRect = { dr.x(), dr.y(), dr.width(), dr.height() };
    10531056        result = surface->StretchBlit(surface, s, &sRect, &dRect);
     
    10971100    IDirectFBSurface *sourceSurface = dfbData->directFBSurface();
    10981101    if (transform.isScaling()) {
     1102        Q_ASSERT(supportsStretchBlit());
    10991103        Q_ASSERT(qMin(transform.m11(), transform.m22()) >= 0);
    11001104        offset.rx() *= transform.m11();
     
    11851189}
    11861190
     1191bool QDirectFBPaintEnginePrivate::supportsStretchBlit() const
     1192{
     1193#ifdef QT_DIRECTFB_STRETCHBLIT
     1194    return !(q->state()->renderHints & QPainter::SmoothPixmapTransform);
     1195#else
     1196    return false;
     1197#endif
     1198}
     1199
     1200
    11871201void QDirectFBPaintEnginePrivate::systemStateChanged()
    11881202{
Note: See TracChangeset for help on using the changeset viewer.