summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qwindowsurface_s60.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Use ARGB32 premultiplied backing store format in Symbian^3Jani Hautakangas2010-08-061-4/+8
| | | | | | | raster paint engine for translucent windows. Task-number: QTBUG-12710 Reviewed-by: Jason Barron
* Add runtime_graphics_system flag to QApplicationPrivate.Jani Hautakangas2010-05-281-1/+1
| | | | | | | | | | This flag can be internally used to detect if QRuntimeGraphicsSystem is used. In some cases Qt needs to know if runtime graphics system is used and it's better to have a flag than relsolving graphics system name every time. Reviewed-by: Jason Barron
* QRuntimeGraphicsSystemJani Hautakangas2010-05-201-2/+29
| | | | | | | | | | | QRuntimeGraphicsSystem is a proxy graphics system which can dynamically switch underlying graphics system on runtime. For example, switch from hardware accelerated graphics system to raster graphics system on low GPU memory situation. This feature is currently supported on Symbian platform. Task-number: QT-3276 Reviewed-by: Jason Barron
* Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt into 4.7-s60axis2010-03-161-17/+8
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: demos/embedded/anomaly/anomaly.pro demos/embedded/flightinfo/flightinfo.pro demos/embedded/lightmaps/lightmaps.pro demos/embedded/weatherinfo/weatherinfo.pro examples/network/fortuneclient/fortuneclient.pro examples/network/fortuneserver/fortuneserver.pro examples/network/network-chat/network-chat.pro mkspecs/common/symbian/symbian.conf mkspecs/features/symbian/platform_paths.prf qmake/generators/symbian/symmake.cpp qmake/generators/symbian/symmake.h src/s60installs/s60installs.pro
| * Fixed paint crash in Symbian for trasnclucent dialogs.Janne Anttila2010-03-101-17/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Symbian Qt::WA_TrasnclucentBackground is set for QDialogs. In QTBUG-8706 there is setVisible(false) call for widget before orientation is switched from portrait to landscape with SW APIs. This setVisible call invalidates/marks the widget area, basically whole portrait screen (0,0, 360, 640 in 5800XM) dirty. The orientation switch changes backingstore/windowsurface size to 640, 360, and invalidates that area. As an consequnce the widget dirty area after these two operations is 0, 0, 640, 640. Now when the widget is made visible again, the dirty region is larger than a screen and causes a crash when trying to access windowsurface bitmap data outside its bounds. Fixed the issue by using QPainter instead of own implementation. QPainter handles intersecting with image automatically. Another benefit of QPainter is that it uses platform specific drawHelpers if available to speed-up drawing. Task-number: QTBUG-8706 Reviewed-by: Jani Hautakangas
* | Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-s60-publicaxis2010-02-161-1/+9
|\ \ | |/ | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/common/symbian/symbian.conf mkspecs/features/symbian/application_icon.prf qmake/generators/makefile.cpp qmake/generators/symbian/initprojectdeploy_symbian.cpp qmake/generators/symbian/symmake.cpp tools/assistant/tools/assistant/assistant.pro
| * Fixed missing repaints on S60 3.1.axis2010-02-151-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The bug happened when a paint event came in from Symbian, but the painted area was bigger than the exposed rect being passed in by Symbian. In these cases we would lose updates to the area outside. Fixed by calling Draw() once more if we detect that we painted a larger area to the backing store. It is still a mystery why this worked on 5.0 though... :-P AutoTest: QWidget passed RevBy: Jason Barron Task: QTBUG-8200
* | Merge branch '4.6' of scm.dev.nokia.troll.no:qt/qtaxis2010-02-121-4/+7
|\ \ | |/ | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/common/symbian/symbian.conf qmake/generators/makefile.cpp qmake/generators/symbian/symmake.cpp src/3rdparty/webkit/WebCore/WebCore.pro Conflict resolution was heavily based on manual application of commit 9cc4ae77a73bd28ff495f36f26dd87c78b76b976.
| * Fixed defect in handling of expose events for SymbianGareth Stockwell2010-02-091-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit bc82db did not correctly handle native child widgets. Consider the case when we have a top-level widget A with a native child widget B. When QSymbianControl::Draw() is called on the control corresponding to B, the following occurs: 1. The inExpose flag is set in B's QWExtra structure. 2. The call to syncBackingStore() results in a call to QWidgetBackingStore::flush(), passing default parameters. 3. Because no target widget was passed to flush(), this function selects the top-level widget (A) as the target for the flush operation, passing A as the first argument of QS60WindowSurface::flush(). 4. QS60WindowSurface::flush() checks the inExpose flag from A's QWExtra structure, finds it to be false, and proceeds to call DrawNow() on A's control. Because QSymbianControl::Draw() uses the default graphics context, this context is shared between controls. This means that the DrawNow() call in step 4 causes a WSERV-10 panic (Activate() called on an already-active) graphics context. This patch moves the inExpose flag from B's QWExtra into A's QTLWExtra, with the result that the call to DrawNow() in step 4 is suppressed. Task-number: QTBUG-7960 Reviewed-by: axis
* | Merge branch '4.6' of scm.dev.nokia.troll.no:qt/qt-s60-publicaxis2010-01-211-4/+6
|\ \ | |/ | | | | | | Conflicts: mkspecs/features/symbian/platform_paths.prf
| * Improve the behavior of expose events on Symbian.Jason Barron2010-01-141-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously when an expose was received from WSERV, we simply called BitBlt (for raster) or called flush on the window surface (for anything else). This behavior differs from other platforms which call syncBackingStore(). This difference means that we flush the backing store without actually updating the content first. This works for most cases because if there actually was new content, it would be updated when the widget's UpdateRequest event was handled. The problem arises when the backing store does not have the correct content. This can happen if the backing store was deleted, but only partially restored (see Task below). Another problem is with the OpenVG graphics system which assumes that beginPaint() is called before endPaint() is order to initialize the context and the surface size. The fix is to call syncBackingStore() like the other platforms, but introduce a bit field to prevent infinite recursion in the painting pipeline. Task-number: QTBUG-4921 Reviewed-by: axis Reviewed-by: Gareth Stockwell
| * Update copyright year to 2010Jason McDonald2010-01-061-1/+1
| | | | | | | | Reviewed-by: Trust Me
* | Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/qt-s60-publicaxis2009-12-181-4/+6
|\ \ | |/ | | | | | | | | Conflicts: configure src/gui/text/qfontdatabase_s60.cpp
| * Fix for QTBUG-4908 SVG transparency rendering problem.Jani Hautakangas2009-12-161-3/+5
| | | | | | | | | | | | | | | | QPixmap::copy discarded alpha channel. This fix also removes usage of member variables CFbsBitGc and CFbsBitmapDevice. Now those are used only in function scope. Reviewed-by: Sami Merila
| * Fix typo in license headerAlessandro Portale2009-11-121-1/+1
| | | | | | | | | | | | The word 'module' was missing. Reviewed-By: TrustMe
* | Some compile fixes.axis2009-11-131-1/+1
| |
* | Various header file inclusion fixes for rvct on linux using a case-sensitive ↵Simon Hausmann2009-10-231-1/+1
|/ | | | file system.
* Fixed a crash bug on S60 SDK 3.1.axis2009-10-071-1/+4
| | | | | | | | | | | | The crash was caused by the image data not being locked before being accessed. Also avoided an unnecessary detach copy by making the image variable a reference. RevBy: Jani Hautakangas Task: QTBUG-4705 AutoTest: QWidget passed
* Introduce native Symbian bitmap support to QPixmapJani Hautakangas2009-09-181-103/+55
| | | | | | | | | This is done to reduce heap consumption and to give a possibility to share bitmaps across process. QPixmap maps to Symbian CFbsBitmap which is stored in Symbian font and bitmap server. Reviewed-by: Jason Barron
* Update license headers again.Jason McDonald2009-09-091-4/+4
| | | | Reviewed-by: Trust Me
* Update tech preview license header for files that are new in 4.6.Jason McDonald2009-08-311-13/+13
| | | | Reviewed-by: Trust Me
* Changed names and URLs to reflect name change.axis2009-08-191-1/+1
| | | | RevBy: Trust me
* Changing names of Symbian leave <-> qt throw translation functionsmread2009-08-131-2/+2
| | | | due to http://qt-reviews.europe.nokia.com/r/67/
* Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt-s60-publicmread2009-08-071-4/+4
|\ | | | | | | | | Conflicts fixed: src/corelib/io/qdiriterator.cpp
| * Update license headers according to commit 858c70f768e.axis2009-08-061-3/+3
| | | | | | | | RevBy: Trust me
| * Replaced $MODULE$ with hardcoded module names.axis2009-08-061-1/+1
| | | | | | | | RevBy: Trust me
* | replacing assert with recovery for begin/end paint lock for exception ↵mread2009-08-071-3/+5
|/ | | | compatability
* Squashed commit of the topic/exceptions branch.Harald Fernengel2009-08-031-4/+5
| | | | | Contains some smaller fixes and renaming of macros. Looks big, but isn't scary at all ;)
* Fix warnings because of unused variables.axis2009-06-291-1/+1
|
* Fixed incorrect headers.axis2009-06-031-1/+31
|
* Small optimization when hiding windows.Jason Barron2009-04-301-3/+4
| | | | | | | | | | When a window is hidden, it will call releaseBuffer() on the backing store which in turn will resize the window surface to a null rect. In this case, there is no need to update the QImage with the data pointer since it will be updated on the subsequent beginPaint() when the image is resized to a valid size again. This also avoids doing unnecessary locking on the FBSERV heap which still involves a context switch on older versions of Symbian.
* Get transparency working by clearing the window surface.Jason Barron2009-04-281-1/+22
| | | | | | | | | This is duplicated code from the raster paint engine's beginPaint() function. For translucent windows the previous contents must be cleared from the backing store before the new content is painted. This class should probably be re-written as a subclass of the raster version. The reason we cannot use that implementation directly is because we cannot use QNativeImage because it doesn't provide anywhere we can do locking.
* More work on translucent windows.Jason Barron2009-04-281-9/+8
| | | | | | | | | | | | One step closer to semi-transparent windows, but not there yet. This gets the transparent contents into the window, but the previous contents are not cleared so it keeps drawing the backing store on top of itself each time a Draw() is done. SetBackgroundColor() indicates to WSERV that our window is semi-transparent. We also make sure not to use 'EDrawModeWriteAlpha' when the widget is non-opaque since this actually changes the alpha channel on the frame buffer (not the window) so the gives undesired results. It's a faster draw mode though so we should use it where we can.
* Fixes: Add support for translucent windows in Symbian.Jason Barron2009-04-281-1/+10
| | | | | | | | | | | Warning, this is completely untested! Details: This should (in theory) get translucent windows working but this hasn't been tested yet. The emulator environment seems to return only 16ColorMU display modes which implies the window is opague so Qt ignores the translucent flag. HW seems to create 16ColorMA windows, but it hasn't been tested there yet either (no time).
* Long live Qt for S60!axis2009-04-241-0/+174