summaryrefslogtreecommitdiffstats
path: root/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Set serial number in QDFBPixmapData::transformedAnders Bakken2010-01-041-0/+1
| | | | | | | QDirectFBPixmapData::transformed initializes a new QDirectFBPixmapData object but doesn't set its serial number. Reviewed-by: Donald Carr <donald.carr@nokia.com>
* Fix a alpha issue with RGB32 and DirectFBAnders Bakken2009-09-291-1/+4
| | | | | | | | | | Since we can't use RGB32 format with DirectFB (issues regarding Qt's assumptions about the alpha byte) we need to explicitly convert images of this type to the preferred alphaPixmap format. This fixes an issue where RGB32 images get a curious gray alpha overlay. Reviewed-by: Noam Rosenthal <noam.rosenthal@nokia.com>
* Simplify QDirectFBPixmapData::fromDataBufferAnders Bakken2009-09-161-48/+3
| | | | | | | | There's no need for the intermediate surface creation. RenderTo will handle things like palette/transparency etc. Should also provide some speedup. Reviewed-by: Noam Rosenthal <noam.rosenthal@nokia.com>
* Update license headers again.Jason McDonald2009-09-091-4/+4
| | | | Reviewed-by: Trust Me
* Fix QDirectFBPixmapData::fromImageAnders Bakken2009-09-081-6/+30
| | | | | | | | | | | This fix should optimize pixmap loading on most platforms and also fixes a bug on a certain hardware where the alpha channel of an image was not retained upon loading it. This patch also takes care of handling dithering better in QDirectFBPixmapData::fromImage(). Reviewed-by: Donald Carr <donald.carr@nokia.com>
* Rewrite of DirectFB locking mechanismAnders Bakken2009-09-011-14/+17
| | | | | | | | | | | | | | | | | DirectFB allows you to have a locked subSurface that remains valid while you paint on the unlocked "parent" surface. The only limitation is that when accessing the locked memory you might have to call DirectFB->WaitIdle() in case pending GPU operations aren't finished. After this we keep the locked surface around at all times (from the first time it's requested) until the surface dies. Previous calls to lock() will just call WaitIdle if necessary and previous calls to unlock now just mark the surface as dirty and in need of a WaitIdle if someone needs to access its pixel data. Reviewed-by: Donald Carr <donald.carr@nokia.com>
* Make DirectFB compile with Qt in a namespaceAnders Bakken2009-09-011-2/+2
| | | | Reviewed-by: Donald Carr <donald.carr@nokia.com>
* More DirectFB ifdef cleanup.Anders Bakken2009-08-311-1/+2
| | | | | | | Make sure the plugin builds but doesn't do anything when configured without -plugin-gfx-directfb Reviewed-by: Donald Carr <donald.carr@nokia.com>
* Clean up directfb ifdefsAnders Bakken2009-08-311-0/+5
| | | | | | Make sure all files are wrapped in QT_NO_QWS_DIRECTFB Reviewed-by: Donald Carr <donald.carr@nokia.com>
* Fix QT_BEGIN/END_NAMESPACE in DirectFBAnders Bakken2009-08-311-0/+5
| | | | Reviewed-by: Donald Carr <donald.carr@nokia.com>
* Merge branch '4.5' into 4.6Thiago Macieira2009-08-311-13/+13
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: demos/boxes/glshaders.cpp demos/boxes/vector.h demos/embedded/fluidlauncher/pictureflow.cpp demos/embedded/fluidlauncher/pictureflow.h doc/src/desktop-integration.qdoc doc/src/distributingqt.qdoc doc/src/examples-overview.qdoc doc/src/examples.qdoc doc/src/frameworks-technologies/dbus-adaptors.qdoc doc/src/geometry.qdoc doc/src/groups.qdoc doc/src/objecttrees.qdoc doc/src/platform-notes.qdoc doc/src/plugins-howto.qdoc doc/src/qt3support.qdoc doc/src/qtdbus.qdoc doc/src/qtdesigner.qdoc doc/src/qtgui.qdoc doc/src/qtmain.qdoc doc/src/qtopengl.qdoc doc/src/qtsvg.qdoc doc/src/qtuiloader.qdoc doc/src/qundo.qdoc doc/src/richtext.qdoc doc/src/topics.qdoc src/corelib/tools/qdumper.cpp src/gui/embedded/qkbdpc101_qws.cpp src/gui/embedded/qkbdsl5000_qws.cpp src/gui/embedded/qkbdusb_qws.cpp src/gui/embedded/qkbdvr41xx_qws.cpp src/gui/embedded/qkbdyopy_qws.cpp src/gui/embedded/qmousebus_qws.cpp src/gui/embedded/qmousevr41xx_qws.cpp src/gui/embedded/qmouseyopy_qws.cpp src/gui/painting/qpaintengine_d3d.cpp src/gui/painting/qwindowsurface_d3d.cpp src/opengl/gl2paintengineex/glgc_shader_source.h src/opengl/gl2paintengineex/qglpexshadermanager.cpp src/opengl/gl2paintengineex/qglpexshadermanager_p.h src/opengl/gl2paintengineex/qglshader.cpp src/opengl/gl2paintengineex/qglshader_p.h src/opengl/util/fragmentprograms_p.h src/plugins/kbddrivers/linuxis/linuxiskbdhandler.cpp src/plugins/mousedrivers/linuxis/linuxismousehandler.cpp src/script/parser/qscript.g src/script/qscriptarray_p.h src/script/qscriptasm_p.h src/script/qscriptbuffer_p.h src/script/qscriptclass.cpp src/script/qscriptclassdata_p.h src/script/qscriptcompiler.cpp src/script/qscriptcompiler_p.h src/script/qscriptcontext.cpp src/script/qscriptcontext_p.cpp src/script/qscriptcontext_p.h src/script/qscriptcontextfwd_p.h src/script/qscriptecmaarray.cpp src/script/qscriptecmaarray_p.h src/script/qscriptecmaboolean.cpp src/script/qscriptecmacore.cpp src/script/qscriptecmadate.cpp src/script/qscriptecmadate_p.h src/script/qscriptecmaerror.cpp src/script/qscriptecmaerror_p.h src/script/qscriptecmafunction.cpp src/script/qscriptecmafunction_p.h src/script/qscriptecmaglobal.cpp src/script/qscriptecmaglobal_p.h src/script/qscriptecmamath.cpp src/script/qscriptecmamath_p.h src/script/qscriptecmanumber.cpp src/script/qscriptecmanumber_p.h src/script/qscriptecmaobject.cpp src/script/qscriptecmaobject_p.h src/script/qscriptecmaregexp.cpp src/script/qscriptecmaregexp_p.h src/script/qscriptecmastring.cpp src/script/qscriptecmastring_p.h src/script/qscriptengine.cpp src/script/qscriptengine_p.cpp src/script/qscriptengine_p.h src/script/qscriptenginefwd_p.h src/script/qscriptextenumeration.cpp src/script/qscriptextenumeration_p.h src/script/qscriptextqobject.cpp src/script/qscriptextqobject_p.h src/script/qscriptextvariant.cpp src/script/qscriptfunction.cpp src/script/qscriptfunction_p.h src/script/qscriptgc_p.h src/script/qscriptmember_p.h src/script/qscriptobject_p.h src/script/qscriptprettypretty.cpp src/script/qscriptprettypretty_p.h src/script/qscriptvalue.cpp src/script/qscriptvalueimpl.cpp src/script/qscriptvalueimpl_p.h src/script/qscriptvalueimplfwd_p.h src/script/qscriptvalueiteratorimpl.cpp src/script/qscriptxmlgenerator.cpp src/script/qscriptxmlgenerator_p.h tests/auto/linguist/lupdate/testdata/recursivescan/project.ui tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp tests/auto/qkeyevent/tst_qkeyevent.cpp tools/linguist/shared/cpp.cpp
| * Update tech preview license header.Jason McDonald2009-08-311-13/+13
| | | | | | | | Reviewed-by: Trust Me
| * Update license headers.Jason McDonald2009-08-111-1/+1
| | | | | | | | Reviewed-by: Trust Me
* | Use QScopedPointer instead of homegrown smartptrAnders Bakken2009-08-261-30/+29
| | | | | | | | | | | | | | Since QScopedPointer can take a custom cleanup handler we can use this instead of the original QDirectFBPointer. Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
* | Implement support for keeping image provider aliveAnders Bakken2009-08-251-1/+7
| | | | | | | | | | | | | | | | | | | | | | If you define QT_DIRECTFB_IMAGEPROVIDER_KEEPALIVE we make sure atleast one IDirectFBImageProvider is alive at all times. Apparently this is refcounted by DirectFB on atleast one implementation and there's considerable overhead involved when releasing the last/creating the first image provider. Reviewed-by: TrustMe
* | Implement support for DirectFB image providersAnders Bakken2009-08-251-0/+155
| | | | | | | | | | | | | | | | | | Reimplement QPixmapData::fromFile/fromData to load images using IDirectFBImage providers. This functionality might be accelerated on embedded boards and could have potentially large performance enhancements. Reviewed-by: Donald Carr <donald.carr@nokia.com>
* | Refactor QDirectFBPaintDevice/QDirectFBPixmapDataAnders Bakken2009-08-251-17/+17
| | | | | | | | | | | | Move format into QDirectFBPaintDevice. Reviewed-by: Donald Carr <donald.carr@nokia.com>
* | Reset is_null in QDirectFBPixmapData::invalidate()Anders Bakken2009-08-241-0/+1
| | | | | | | | Reviewed-by: Donald Carr <donald.carr@nokia.com>
* | Release surface in QDirectFBPixmapData::invalidateAnders Bakken2009-08-241-0/+4
| | | | | | | | Reviewed-by: Donald Carr <donald.carr@nokia.com>
* | Clean up surface creation code in dfbAnders Bakken2009-08-211-11/+15
| | | | | | | | | | | | | | Don't try too hard to temporarily represent an image in a real directfb surface. It leads to all sorts of rendering issues. Reviewed-by: Donald Carr <donald.carr@nokia.com>
* | Update contact URL in license headers.Jason McDonald2009-08-121-1/+1
| | | | | | | | Reviewed-by: Trust Me
* | Merge branch '4.5'Thiago Macieira2009-08-031-6/+7
|\ \ | |/ | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qsharedpointer.cpp src/corelib/tools/qsharedpointer_impl.h src/gui/dialogs/qcolordialog.cpp src/gui/painting/qwindowsurface_raster.cpp src/network/access/qnetworkaccessmanager.cpp tests/auto/qsharedpointer/externaltests.cpp
| * Refactor QDirectFBPaintDeviceAnders Bakken2009-07-281-6/+7
| | | | | | | | | | | | | | | | | | | | Make the engine a member in QDirectFBPaintDevice instead of one in QDirectFBPixmapData and one in QDirectFBWindowSurface. Don't use the default screen for the dfbpaintdevices. Pass one explicitly. Reviewed-by: Noam Rosenthal <noam.rosenthal@nokia.com>
* | Merge commit 'origin/4.5'Oswald Buddenhagen2009-07-201-1/+6
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/webkit/VERSION src/3rdparty/webkit/WebCore/ChangeLog src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp src/3rdparty/webkit/WebCore/page/DOMWindow.idl src/corelib/io/qdiriterator.cpp src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h tests/auto/qxmlquery/tst_qxmlquery.cpp tools/linguist/lconvert/main.cpp
| * Clean up directfb bit flippingAnders Bakken2009-07-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | DirectFB declares variables that are bit fields as enums. E.g. DFBSurfaceCapabilities caps; caps |= DSCAPS_LOCK; // doesn't compile in C++ Work around this problem by declaring operators for these operations. This greatly improves the readability of the code. Reviewed-by: TrustMe
| * Fix QDirectFBPixmap::toImageAnders Bakken2009-07-131-0/+5
| | | | | | | | | | | | | | | | | | | | Preallocated surfaces can currently be copied to video memory behind our back. This means that we can not use this mechanism for toImage() In later versions of DirectFB this might be possible to toggle with a flag so I'll leave the code in there #if 0'ed Reviewed-by: Donald <qt-info@nokia.com>
* | Merge branch '4.5'Thiago Macieira2009-06-251-2/+3
|\ \ | |/ | | | | | | | | Conflicts: src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
| * Fix a rendering issueAnders Bakken2009-06-241-3/+3
| | | | | | | | | | | | Make sure surfaces always are locked when used as source for something. Reviewed-by: TrustMe
* | Make sure to update is_null in copy/transformedAnders Bakken2009-06-221-0/+3
| | | | | | | | Reviewed-by: TrustMe
* | Fix a couple of issues after QPixmapData optimsAnders Bakken2009-06-181-10/+15
| | | | | | | | | | | | | | | | Make sure we always set w, h and d. See fa8030a935acaacee570eee320e7510a4cfdc853 Reviewed-by: TrustMe
* | Speed up QPixmap::width(), height(), isNull() and depth().Andreas Aardal Hanssen2009-06-171-0/+8
|/ | | | | | | | | | | | | | | | This change moves the w, h, d variables to QPixmapData and introduces is_null to keep track of nullness. This is possible only because QPixmapData is internal API; otherwise we'd have to be smarter. The optimization makes the QPixmap::width() function take 7 instructions, down from 34 before. For the calculator demo in the declarative ui branch this reduces a block of 750000 instructions (out of 30000000) to around 100000-150000 instructions. Tested on Windows, Linux, Mac. Raster, X11 and OpenGL paint engines. Have not tested the DirectFB engine. Reviewed-by: Trond
* Update license headers as requested by the marketing department.Jason McDonald2009-06-161-2/+2
| | | | Reviewed-by: Trust Me
* Make the directfb plugin compile against 0.9Anders Bakken2009-06-081-1/+6
| | | | | | | | | | Not sure to what extent it actually works but atleast it compiles now. - A couple of image formats doesn't exist in 0.9 - IDirectFBSurface::ReleaseSource doesn't exist in 0.9 - IDirectFBWindow::SetBounds doesn't exist in 0.9 Reviewed-by: Donald <qt-info@nokia.com>
* Make sure to retain alpha information in copyAnders Bakken2009-06-041-3/+4
| | | | | | We need to set alpha to the right value when copying pixmaps. Reviewed-by: Donald <qt-info@nokia.com>
* Remove all force raster on RGB32 stuffAnders Bakken2009-05-281-22/+1
| | | | | | | | | Previously we allowed RGB32 but forced fallbacks for all drawing operations. It turns out blitting operations doesn't work right either so we'll rather just disallow this format altogether. See also 36ae58e7a6a888d3ae7bd162d59daada550bbfb1 Reviewed-by: Donald <qt-info@nokia.com>
* Fix a type in warningAnders Bakken2009-05-111-1/+1
| | | | | | QDirecttFBPixmapData => QDirectFBPixmapData Reviewed-by: TrustMe
* Refactored image cachingAnders Bakken2009-05-051-1/+11
| | | | | | | | | | | Make image caching a lot cleaner and more sensible. By default we do not cache images since creating a preallocated surface is quick and we don't really want to waste memory. In the case where the driver does not support preallocated surfaces you can enable image caching to speed up drawImage. Reviewed-by: TrustMe
* Lock for read only when possibleAnders Bakken2009-05-041-3/+9
| | | | | | | | | | From benchmarking I've established that surface->Lock(DSLF_READ) is faster than surface->Lock(DSLF_WRITE) which is faster than surface->Lock(DSLF_READ|DSLF_WRITE). This patch will make us Lock for read only, when possible. Reviewed-by: Donald <qt-info@nokia.com>
* Convert bitmaps to alpha pixmap formatAnders Bakken2009-04-221-2/+2
| | | | | | | | Ideally we'd let raster pixmap data handle this but QPixmap::fromImage creates a QPixmapData::PixmapType regardless of the bit depth of the image so we have to handle this case. Reviewed-by: Donald <qt-info@nokia.com>
* Kill some warningsAnders Bakken2009-04-221-0/+3
| | | | | | | Refactor two small things so that we don't get warnings when QT_DIRECTFB_NO_(OPAQUEDETECTION|MOUSE|KEYBOARD) is defined Reviewed-by: Shane McLaughlin <Shane.McLaughlin@trolltech.com>
* Unify IDirectFBSurface->Lock() callsAnders Bakken2009-04-221-9/+10
| | | | | | | | | | | | | | | | Certain compilers warns on this kind of code: uchar *mem = ...; (void**)(&mem) dereferencing type punned pointer etc. Since we had this for every call to Lock I put it all into a convenience function. Also fix some issues where we memcpy'ed more bytes than necessary (when stride != w * depth() / 8) and fix issue with QDirectFBScreen::solidFill with pixelFormat == RGB32 Reviewed-by: Donald <qt-info@nokia.com>
* Inline hasAlphaChannel and add pixelFormat getterAnders Bakken2009-04-091-5/+0
| | | | Reviewed-by: TrustMe
* Be smarter about alpha formatsAnders Bakken2009-04-091-32/+129
| | | | | | | | | Try harder to prevent blends by explicitly checking for alpha pixels in the source image (unless asked not to). Can be defined out by #defining QT_NO_DIRECTFB_OPAQUE_DETECTION Reviewed-by: Donald <qt-info@nokia.com>
* Make sure to clear surface in toImageAnders Bakken2009-04-071-1/+6
| | | | | | | It seems DirectFB doesn't preserve alpha value of a blit unless BLEND is specified and if it is we need to Clear to transparent first. Reviewed-by: TrustMe
* Code cleanup.Anders Bakken2009-04-071-5/+5
| | | | | | QDirectFBPaintDevice's know their screen. No need to use instance() in these cases. Reviewed-by: TrustMe
* Call ReleaseSource where appropriateAnders Bakken2009-04-071-0/+2
| | | | | | | | DirectFB caches the last source surface in the target surface after a Blit. This can cause a surface to be kept around longer than desired since the caching increases the ref-count. Unless it's likely that the blit will happen again soon we Release the source. Reviewed-by: TrustMe
* Better QDirectFBPixmapData::toImage()Anders Bakken2009-04-071-0/+11
| | | | | | | | | This is essentially a return to the earlier version of toImage(). Use a preallocated surface that operates on the returned image to do the conversion. If this causes drawing bugs it is likely a bug in the directfb driver and can be worked around by compiling with QT_NO_DIRECTFB_PREALLOCATED. Reviewed-by: TrustMe
* Make sure to set blitting flagsAnders Bakken2009-04-071-20/+3
| | | | | | | | | Need to set blitting flags before blitting from a surface with alpha channel. Otherwise alpha areas become white. For some reason setting the porterduff to DSPD_SRC does not fix this. Reviewed-by: TrustMe
* Improve QDirectFBPixmapData::copyAnders Bakken2009-04-071-2/+8
| | | | | | Make sure we retain the alpha channel of the original surface. Reviewed-by: TrustMe
* Improve QDirectFBPixmapData::transformedAnders Bakken2009-04-071-5/+14
| | | | | | Make sure we keep retain alpha if there is one in the source. Reviewed-by: TrustMe