summaryrefslogtreecommitdiffstats
path: root/src/openvg/qpixmapdata_vg_p.h
Commit message (Collapse)AuthorAgeFilesLines
* Update contact information in license headers.Sergio Ahumada2012-08-011-2/+2
| | | | | | | | | | | | | - Replace Nokia contact email address with Qt Project website. - Remove "All rights reserved" line from license headers. As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: Ie7ba62011752fcb149b99b26317c54f2a0cfa931 Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
* Recovering from draw failures after EGL surface creation failuremread2012-01-131-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Qt drawing system is not designed to handle failures in beginPaint and endPaint. But the Symbian port is creating EGL contexts and surfaces on demand in these functions. These can fail, eg in the defect reported the app gets a visibile=true event for such a short period that it fails to create the surface before it is invisible again. These failures have to be coped with. Brush image drawing is failing if the app is asked to draw while in the background, because the EGL surface cannot be created. After this, if the app comes to the foreground at the wrong time, the failed drawing is shown on the screen as a flat colored area. A failedToAlloc variable in the openvg paint engine was locking in this failed drawing, so that it would never redraw. This is fixed by removing all use of that variable. Failed surface creation during a draw in response to a visibility change event was also leaving the window backing store with bad content. This is now cleared on a surface creation failure so that drawing is retried when the next visibility change event arrives. The retry mechanism for creating a surface on failure also makes the problem circumstances more likely to occur and can block the app unnecessarily. Now, instead of blocking for 1 second every time on failed surface creation, it only blocks on the first failure in a sequence thereby allowing other parts of the app to run freely while it is in the background. Task-number: ou1cimx1#951921 Change-Id: I1e27746957ff624b0d9a1cdc9b319d0a3477135d Reviewed-by: Gareth Stockwell <gareth.stockwell@accenture.com> Reviewed-by: Shane Kearns <ext-shane.2.kearns@nokia.com>
* Update year in Nokia copyright messages.Jason McDonald2012-01-111-1/+1
| | | | | | | | | Simple search and replace. This commit doesn't touch 3rd-party files, nor translations (where the change is not so simple and will be handled in a separate commit). Change-Id: I4e48513b8078a44a8cd272326685b25338890148 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Handle QVolatileImage-backed pixmaps optimally in drawPixmap().Laszlo Agocs2011-06-161-1/+1
| | | | | | | | | | | | | | When drawing such pixmaps (used by both the openvg and opengl graphics systems) onto another pixmap or to a QImage, the performance was sub-optimal due to missing and accidentally disabled support specific to QVolatileImage. This is now fixed and drawing pixmaps into a QImage is also made optimal by using the QS60PaintEngine for QImage too. This will cause a 5-7x (or even up to 12x on certain hardware and platform) increase in offscreen pixmap drawing performance. Task-number: QTBUG-19880 Reviewed-by: Jani Hautakangas
* Simplify texture pooling logic in GL graphics system.Jani Hautakangas2011-06-091-0/+1
| | | | | | | | | | | | | Remove ugly TemporarilyCachedBindOption and use QGLTexture objects as texture pool entries instead of QGLPixmapData. Make texture pooling totally Symbian specific, remove VG like texture pooling code and use common texture binding path which is used on other platforms also on Symbian. QGLPixmapData should be only used to bind SgImage based textures (will be implemented by another commit). Task-number: QTBUG-19180 Reviewed-by: Samuel Rødal
* Update licenseheader text in source filesJyri Tahtela2011-05-131-17/+17
| | | | | | | Updated version of LGPL and FDL licenseheaders. Apply release phase licenseheaders for all source files. Reviewed-by: Trust Me
* Fix an issue with VGImage readback in openvg.Laszlo Agocs2011-03-241-1/+1
| | | | | | | | | The special case of creating a pixmap from RSgImage via a native handle provider needs extra attention when hibernating: In this case the hibernating happens as usual, however doing a readback would produce unwanted results and must be avoided. Reviewed-by: Jani Hautakangas
* Added native image handle provider support in pixmaps on openvg.Laszlo Agocs2011-03-081-0/+11
| | | | | | | | | | | | | | | QNativeImageHandleProvider is a thin interface consisting of get() and release() functions. Pixmaps constructed with such a provider will call these functions to acquire and release a native handle, e.g. a CFbsBitmap or RSgImage pointer in case of Symbian. The behavior is largely similar to constructing pixmaps via fromSymbianCFbsBitmap or fromSymbianRSgImage, with the exception of pixmap hibernation: release() (and subsequently get()) is guaranteed to be called also in case of hibernation, allowing more fine-grained tracking of the usage and lifetime of image data. Task-number: QT-4632 Reviewed-by: Jani Hautakangas
* VGImage readback support in QPixmap on OpenVG.Laszlo Agocs2011-03-071-1/+8
| | | | | | | | | | | Enable readback of pixel data for pixmaps that are constructed directly from a VGImage. These do not have any backing data in main memory (i.e. 'source' is null), however certain operations, like toImage(), fill(), or painting into the pixmap do not work without it. With this patch the data is read back via vgGetImageSubData when needed. Task-number: QT-4669 Reviewed-by: Jani Hautakangas
* Changed QPixmap VG backend to use CFbsBitmap on Symbian.Laszlo Agocs2011-02-281-1/+5
| | | | | | | | | | | | | | Similarly to QS60PixmapData, that is used on raster, QVGPixmapData is also backed by a CFbsBitmap from now on (at least when it makes sense to do so). This allows copy-less bitmap handle duplication in from- and toSymbianCFbsBitmap() in case of certain image formats, reduces local heap usage and improves performance with the s60 style due to a reduced number of pixel data copies. Task-number: QT-2505 Reviewed-by: Jason Barron Reviewed-by: Jani Hautakangas
* Update copyright year to 2011.Jason McDonald2011-01-101-1/+1
| | | | Reviewed-by: Trust Me
* Revert function renaming in QtOpenVG.Jani Hautakangas2010-10-291-2/+2
| | | | | | | Functions were accidentally thought to be in private scope. Renaming broke BC. Reviewed-by: Jason Barron
* Fallback to vgWritePixels in drawPixmap.Jani Hautakangas2010-10-281-2/+4
| | | | | | | | | | Use vgWritePixels, if possible, in case where VGImage for QPixmap can't be allocated due to low GPU memory situation. This patch also renames some VG paint engine internal functions to clarify their purpose. Task-number: QT-3589 Reviewed-by: Jason Barron
* Use QImage 'convertInPlace' versions in QVGPixmapData load functions.Jani Hautakangas2010-08-241-0/+8
| | | | | | | QImage 'convertInPlace' uses less memory than 'convertToFormat' version. Task-number: QT-3710 Reviewed-by: Jason Barron
* Update copyright year to 2010Jason McDonald2010-01-061-1/+1
| | | | Reviewed-by: Trust Me
* Add an image allocation pool to the OpenVG paint engineRhys Weatherley2009-12-151-1/+16
| | | | | | | | | | | | | Some OpenVG GPU's have limitations on the amount of memory available to create VGImage's. When the memory runs out, vgCreateImage() will fail. This change introduces QVGImagePool, which keeps track of all QVGPixmapData image allocations and ejects least-recently-used pixmaps when GPU memory is exhausted. Task-number: QT-2554 Reviewed-by: trustme
* Automatically destroy VG pixmaps when the last window surface goes awayRhys Weatherley2009-12-061-2/+29
| | | | | | | | | | | | | | Under S60, Qt will destroy the window surfaces of an application that goes into the background, which frees up EGL surface objects. But the VGImage's for pixmaps, and the EGLContext, were still using GPU memory. This change keeps track of the number of widgets / window surfaces that are in use and then calls hibernate() on all QVGPixmapData objects when it goes to zero. Once all the VGImage's are destroyed, the EGLContext should also be destroyed. Task-number: QT-2555 Reviewed-by: Sarah Smith
* Do not recreate the VGImage if the size is unchangedRhys Weatherley2009-11-201-0/+1
| | | | | | | | | When a pixmap's contents change in QVGPixmapData, only recreate the VGImage in the GPU if the size is different than before. This should help reduce GPU memory fragmentation. Task-number: QT-2504 Reviewed-by: Sarah Smith
* Support OpenVG graphics systems that inherit from QVGPixmapDataRhys Weatherley2009-11-111-3/+3
| | | | | | | | Custom graphics systems, may want to inherit from QVGPixmapData to implement alternative pixmap management strategies. We make toVGImage() overridable and the data members protected to support this. Reviewed-by: Sarah Smith
* Added QPixmapData::createCompatiblePixmapData() used by QPixmap::copy().Samuel Rødal2009-10-141-0/+2
| | | | | | QPixmap::copy() now returns a pixmap with the same pixmap backend. Reviewed-by: Gunnar Sletta
* Modify functions for native pixmap data conversion on Symbian.Jason Barron2009-09-231-2/+2
| | | | | | | | | | | | | We need a way to support converion to and from multiple native pixmap types from multiple pixmap backends. Instead of adding more virtual functions to QPixmapData, make the existing one more generic but pass an opaque pointer and a type and do some internal casting. Currently this function is Symbian only, but could easily be extended to work on other platforms. Reviewed-by: Aleksandar Babic Reviewed-by: Jani Hautakangas
* Adding support for symbian graphics resources.Aleksandar Sasha Babic2009-09-181-1/+13
| | | | | | | | | | | | | | This enables us to convert from and to new Symbian type of graphics resource, namely SgImage. This only supported with the OpenVG graphics system. On other graphics systems this will return null QPixmap. Conflicts: src/corelib/global/qglobal.h src/gui/image/qpixmap.h src/gui/image/qpixmap_s60.cpp 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
* Merge commit 'qt/master'Jason Barron2009-08-131-1/+1
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: examples/opengl/samplebuffers/glwidget.cpp src/corelib/io/qfsfileengine_unix.cpp src/corelib/kernel/qobject.cpp src/corelib/tools/qsharedpointer.cpp src/gui/gui.pro tests/auto/qhttp/tst_qhttp.cpp tests/auto/qkeyevent/tst_qkeyevent.cpp
| * Update contact URL in license headers.Jason McDonald2009-08-121-1/+1
| | | | | | | | Reviewed-by: Trust Me
* | Another fix for the include bug in Symbian.Jason Barron2009-07-091-1/+1
|/ | | | | | This header is included by the VG graphics system plugin and since that exists in a different module, the header inclusion bug rears its ugly head again and we need to workaround it by making it a system include.
* Integrate the OpenVG graphics system into Qt 4.6Rhys Weatherley2009-06-221-0/+113
This change also moves the EGL support classes from QtOpenGL to QtGui so they can be shared between OpenGL and OpenVG.