Ignore:
Timestamp:
Aug 2, 2010, 9:27:30 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.3 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

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

    r651 r769  
    922922        }
    923923    } else {
    924         flipFlags = DSFLIP_BLIT;
     924        flipFlags = DSFLIP_BLIT|DSFLIP_ONSYNC;
    925925    }
    926926}
     
    11271127    if (displayArgs.contains(QLatin1String("boundingrectflip"), Qt::CaseInsensitive)) {
    11281128        d_ptr->directFBFlags |= BoundingRectFlip;
     1129    } else if (displayArgs.contains(QLatin1String("nopartialflip"), Qt::CaseInsensitive)) {
     1130        d_ptr->directFBFlags |= NoPartialFlip;
    11291131    }
    11301132
     
    11391141#endif
    11401142        d_ptr->dfb->SetCooperativeLevel(d_ptr->dfb, DFSCL_FULLSCREEN);
     1143
     1144    const bool forcePremultiplied = displayArgs.contains(QLatin1String("forcepremultiplied"), Qt::CaseInsensitive);
    11411145
    11421146    DFBSurfaceDescription description;
     
    11681172    }
    11691173
    1170     if (displayArgs.contains(QLatin1String("forcepremultiplied"), Qt::CaseInsensitive)) {
     1174    if (forcePremultiplied) {
    11711175        description.caps |= DSCAPS_PREMULTIPLIED;
    11721176    }
     
    12181222        break;
    12191223    case QImage::Format_ARGB32:
     1224        if (forcePremultiplied)
     1225            d_ptr->alphaPixmapFormat = pixelFormat = QImage::Format_ARGB32_Premultiplied;
    12201226    case QImage::Format_ARGB32_Premultiplied:
    12211227    case QImage::Format_ARGB4444_Premultiplied:
     
    16751681uchar *QDirectFBScreen::lockSurface(IDirectFBSurface *surface, DFBSurfaceLockFlags flags, int *bpl)
    16761682{
    1677     void *mem;
     1683    void *mem = 0;
    16781684    const DFBResult result = surface->Lock(surface, flags, &mem, bpl);
    16791685    if (result != DFB_OK) {
     
    16841690}
    16851691
     1692static inline bool isFullUpdate(IDirectFBSurface *surface, const QRegion &region, const QPoint &offset)
     1693{
     1694    if (offset == QPoint(0, 0) && region.rectCount() == 1) {
     1695        QSize size;
     1696        surface->GetSize(surface, &size.rwidth(), &size.rheight());
     1697        if (region.boundingRect().size() == size)
     1698            return true;
     1699    }
     1700    return false;
     1701}
    16861702
    16871703void QDirectFBScreen::flipSurface(IDirectFBSurface *surface, DFBSurfaceFlipFlags flipFlags,
    16881704                                  const QRegion &region, const QPoint &offset)
    16891705{
    1690     if (!(flipFlags & DSFLIP_BLIT)) {
     1706    if (d_ptr->directFBFlags & NoPartialFlip
     1707        || (!(flipFlags & DSFLIP_BLIT) && QT_PREPEND_NAMESPACE(isFullUpdate(surface, region, offset)))) {
    16911708        surface->Flip(surface, 0, flipFlags);
    16921709    } else {
Note: See TracChangeset for help on using the changeset viewer.