Changeset 846 for trunk/src/gui/painting/qwindowsurface_s60.cpp
- Timestamp:
- May 5, 2011, 5:36:53 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.7.2 (added) merged: 845 /branches/vendor/nokia/qt/current merged: 844 /branches/vendor/nokia/qt/4.6.3 removed
- Property svn:mergeinfo changed
-
trunk/src/gui/painting/qwindowsurface_s60.cpp
r769 r846 1 1 /**************************************************************************** 2 2 ** 3 ** Copyright (C) 201 0Nokia Corporation and/or its subsidiary(-ies).3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). 4 4 ** All rights reserved. 5 5 ** Contact: Nokia Corporation (qt-info@nokia.com) … … 44 44 #include <QtGui/qpaintdevice.h> 45 45 #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 50 55 51 56 QT_BEGIN_NAMESPACE … … 57 62 }; 58 63 64 TDisplayMode 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 59 79 QS60WindowSurface::QS60WindowSurface(QWidget* widget) 60 80 : QWindowSurface(widget), d_ptr(new QS60WindowSurfacePrivate) 61 81 { 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); 70 83 // We create empty CFbsBitmap here -> it will be resized in setGeometry 71 84 CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap); // CBase derived object needs check on new … … 80 93 setStaticContentsSupport(true); 81 94 } 95 82 96 QS60WindowSurface::~QS60WindowSurface() 83 97 { 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 84 117 delete d_ptr; 85 118 } … … 87 120 void QS60WindowSurface::beginPaint(const QRegion &rgn) 88 121 { 122 #ifdef Q_SYMBIAN_SUPPORTS_SURFACES 123 S60->wsSession().Finish(); 124 #endif 125 89 126 if (!qt_widget_private(window())->isOpaque) { 90 127 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 91 133 pixmapData->beginDataAccess(); 92 134
Note:
See TracChangeset
for help on using the changeset viewer.