Ignore:
Timestamp:
May 5, 2011, 5:36:53 AM (14 years ago)
Author:
Dmitry A. Kuminov
Message:

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

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

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

    r769 r846  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
     
    4444#include <QtGui/qpaintdevice.h>
    4545#include <private/qwidget_p.h>
    46 #include "qwindowsurface_s60_p.h"
    47 #include "qpixmap_s60_p.h"
    48 #include "qt_s60_p.h"
    49 #include "private/qdrawhelper_p.h"
     46#include <private/qwindowsurface_s60_p.h>
     47#include <private/qpixmap_s60_p.h>
     48#include <private/qt_s60_p.h>
     49#include <private/qapplication_p.h>
     50#include <private/qdrawhelper_p.h>
     51
     52#ifdef QT_GRAPHICSSYSTEM_RUNTIME
     53#include <private/qgraphicssystem_runtime_p.h>
     54#endif
    5055
    5156QT_BEGIN_NAMESPACE
     
    5762};
    5863
     64TDisplayMode displayMode(bool opaque)
     65{
     66
     67    TDisplayMode mode = S60->screenDevice()->DisplayMode();
     68    if (opaque) {
     69        mode = EColor16MU;
     70    } else  {
     71        if (QSysInfo::symbianVersion() >= QSysInfo::SV_SF_3)
     72            mode = Q_SYMBIAN_ECOLOR16MAP; // Symbian^3 WServ has support for ARGB32_PRE
     73        else
     74            mode = EColor16MA; // Symbian prior to Symbian^3 sw accelerates EColor16MA
     75    }
     76    return mode;
     77}
     78
    5979QS60WindowSurface::QS60WindowSurface(QWidget* widget)
    6080    : QWindowSurface(widget), d_ptr(new QS60WindowSurfacePrivate)
    6181{
    62 
    63     TDisplayMode mode = S60->screenDevice()->DisplayMode();
    64     bool isOpaque = qt_widget_private(widget)->isOpaque;
    65     if (mode == EColor16MA && isOpaque)
    66         mode = EColor16MU; // Faster since 16MU -> 16MA is typically accelerated
    67     else if (mode == EColor16MU && !isOpaque)
    68         mode = EColor16MA; // Try for transparency anyway
    69 
     82    TDisplayMode mode = displayMode(qt_widget_private(widget)->isOpaque);
    7083    // We create empty CFbsBitmap here -> it will be resized in setGeometry
    7184    CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap);   // CBase derived object needs check on new
     
    8093    setStaticContentsSupport(true);
    8194}
     95
    8296QS60WindowSurface::~QS60WindowSurface()
    8397{
     98#if defined(QT_GRAPHICSSYSTEM_RUNTIME) && defined(Q_SYMBIAN_SUPPORTS_SURFACES)
     99    if(QApplicationPrivate::runtime_graphics_system) {
     100        QRuntimeGraphicsSystem *runtimeGraphicsSystem =
     101                static_cast<QRuntimeGraphicsSystem*>(QApplicationPrivate::graphics_system);
     102        if(runtimeGraphicsSystem->graphicsSystemName() == QLatin1String("openvg")) {
     103
     104            // Graphics system has been switched from raster to openvg.
     105            // Issue empty redraw to clear the UI surface
     106
     107            QWidget *w = window();
     108            if (w->testAttribute(Qt::WA_WState_Created)) {
     109                RWindow *const window = static_cast<RWindow *>(w->winId()->DrawableWindow());
     110                window->BeginRedraw();
     111                window->EndRedraw();
     112            }
     113        }
     114    }
     115#endif
     116
    84117    delete d_ptr;
    85118}
     
    87120void QS60WindowSurface::beginPaint(const QRegion &rgn)
    88121{
     122#ifdef Q_SYMBIAN_SUPPORTS_SURFACES
     123    S60->wsSession().Finish();
     124#endif
     125
    89126    if (!qt_widget_private(window())->isOpaque) {
    90127        QS60PixmapData *pixmapData = static_cast<QS60PixmapData *>(d_ptr->device.data_ptr().data());
     128
     129        TDisplayMode mode = displayMode(false);
     130        if (pixmapData->cfbsBitmap->DisplayMode() != mode)
     131            pixmapData->convertToDisplayMode(mode);
     132
    91133        pixmapData->beginDataAccess();
    92134
Note: See TracChangeset for help on using the changeset viewer.