summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-101-3/+3
|\ | | | | | | Change-Id: Ia12ffdb27ecdf25c2a2bdb0eed1945387502108a
| * QPdf::addImage(): avoid a QImage detach when it's in an acceptable FormatMartin Pley2014-07-031-3/+3
| | | | | | | | | | | | | | | | | | Don't detach QImage, when it's in Format_Mono or Format_ARG32. Use QImage::constScanLine() instead of QImage::scanLine(). Change-Id: I30fcafb576aea3189637a40fd75f77c70017ba46 Reviewed-by: John Layt <jlayt@kde.org> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Fix corruption with QQuickWidget and QOpenGLWidget on ANGLELaszlo Agocs2014-07-071-23/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | This only ocurred in -opengl dynamic builds on Windows, when using ANGLE. The !QT_OPENGL_ES_2 code path did not correctly check for ES. We also need to avoid using REPEAT, just to be safe on ES2 implementations (embedded devices typically) that will not do repeat on non-power-of-two textures. Task-number: QTBUG-39638 Change-Id: I2eeab6627c17255373193c0a0fec8923f711e28c Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | QImage support for RGB30 formatsAllan Sandfeld Jensen2014-07-045-78/+1006
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds basic support for 10-bit per color channel formats to QImage and the XCB plugin. This will make it possible to paint to and from these formats, but only at 8-bit per color channel accuracy. This also fixes Qt5 applications on X11 with native 30bit depth. [ChangeLog][QtGui][QImage] Added support for 10-bit per color channel image formats. Task-number: QTBUG-25998 Change-Id: I93ccd3c74bfbb0bd94b352476e5fe58a94119e1f Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | ARM: do not use the clang integrated assembler in some cases.Erik Verbruggen2014-07-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | The integrated assembler of clang does not understand some/all of the ARM macro assembler syntax used in pixman-arm-neon-asm.S. By default, this integrated assembler is used when using the "clang" command as a driver. This patch turns off the integrated assembler of clang for that file. Change-Id: Ic06801266b5a4b097ca835d815bcc5d5fc672946 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-013-67/+6
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/qnx-x86-qcc/qplatformdefs.h src/corelib/global/qglobal.h src/network/socket/qnativesocketengine_winrt.cpp src/plugins/platforms/android/androidjniaccessibility.cpp src/plugins/platforms/windows/qwindowswindow.cpp Manually adjusted: mkspecs/qnx-armle-v7-qcc/qplatformdefs.h to include 9ce697f2d54be6d94381c72af28dda79cbc027d4 Thanks goes to Sergio for the qnx mkspecs adjustments. Change-Id: I53b1fd6bc5bc884e5ee2c2b84975f58171a1cb8e
| * Fix -Werror compilation on big-endianThiago Macieira2014-06-251-0/+2
| | | | | | | | | | | | | | | | | | | | qt_alphamapblit_rgba8888 is only used on little-endian systems, where qAlpha() returns the correct value. qdrawhelper.cpp:6256:13: error: 'void qt_alphamapblit_rgba8888(QRasterBuffer*, int, int, quint32, const uchar*, int, int, int, const QClipData*)' defined but not used [-Werror=unused-function] Change-Id: Ibba6dd6914138f7ae5d53a8e354597f5fff65433 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
| * When filling the path it should use the painter's pen not the state'sAndy Shaw2014-06-211-1/+1
| | | | | | | | | | | | | | | | | | | | The state should already be updated when fillPath() is called, so it should use the painter's pen to fill the path with instead as this will have been updated already. Task-number: QTBUG-39303 Change-Id: I1cc9922d4183bd44076c26210db06ad825ebf25b Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| * Merge remote-tracking branch 'origin/stable' into 5.3Sergio Ahumada2014-06-111-65/+0
| |\ | | | | | | | | | Change-Id: I147a75ac74bd7b19dbeb99e1ec2836cc5bfc2806
| | * Remove unfinished NEON version of vectorized rotate samplingAllan Sandfeld Jensen2014-06-061-65/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A vectorized codepath for rotating transforms were added in 5.3.0, but was only properly tested for SSE2. The NEON version remains unfinished. Since it was never working, this patch reverts the NEON version. Task-number: QTBUG-39445 Change-Id: Ifbce0e03781d217ad976c6b18ac88381055cba66 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| * | Don't try to draw if there are no points in the pathAndy Shaw2014-06-091-1/+3
| |/ | | | | | | | | | | | | | | | | | | In some cases, for instance if drawEllipse() was called with a null QRect then it would still try to draw a QVectorPath without having enough points in the list. Therefore the point_count should be checked first before doing any drawing. Change-Id: I9b8dbb87c73b74e9df9eb10ec790a484d05d4c46 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | MIPS: Support recognition of the DSP ASE at run-timeAdrian Perez de Castro2014-06-271-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | Add detection of MIPS DSPr2 at run-time in qsimd.cpp. This makes it possible to have generic Qt builds for MIPS that can enable the fast code paths for processors with the DSP ASE at run-time. Also, this makes it possible to manually disable them by setting the environment variable "QT_NO_CPU_FEATURE=dspr2". Last, but not least, functions requiring DSPr2 are not enabled when running in CPUs with version-1 DSP. Change-Id: Ia5a01d84119553c22ab83386c74a6cb8ba5fee53 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Unduplicate the implementations of next power of twoAllan Sandfeld Jensen2014-06-261-17/+3
| | | | | | | | | | | | | | | | | | | | | | Qtbase contains four identical implementations of next power of two, these should be shared and the implementation made available to other qt modules, as it is also used many places outside of qtbase. [ChangeLog][QtCore][QtMath] Introduced qNextPowerOfTwo methods. Change-Id: Id23fbe5ad6bae647b30d5a4212c0330e48a50278 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/stable' into devJ-P Nurmi2014-06-051-4/+3
|\| | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/qt.prf src/plugins/platforms/xcb/qxcbwindow.h src/tools/qdoc/qdocindexfiles.cpp src/widgets/kernel/qwidget_qpa.cpp Change-Id: I214f57b03bc2ff86cf3b7dfe2966168af93a5a67
| * Fix fast painting of clipped text on non RGB32 formatsAllan Sandfeld Jensen2014-05-281-4/+3
| | | | | | | | | | | | | | | | | | | | QRasterPaintEngine::alphaPenBlt makes the assumption that a device with bit depth 32 has optimized alphamapBlit and alphaRGBBlit routines. This will fail on RGBA8888 format resulting in some text not being rendered. Change-Id: Ia7d88bb0e3094894affceda1acc42396b67b3677 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | QPainter on QBitmap: make setBrush(NoBrush) work as expected.David Faure2014-05-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It had no effect because of an explicit check for NoBrush. However the default in QBitmap is (unfortunately) QBrush(color0), rather than NoBrush, so the brush must be updated when calling setBrush(NoBrush). I suppose the real issue is that lastBrush is default-constructed in QRasterPaintEngine, rather than starting with the brush from QPainter, which is QBrush(color0) for the case of the bitmap. But no reason to special case NoBrush here anyway. Task-Number: QTBUG-38781 Change-Id: I9996ac12bf628920cfaf0de9c886f637a336028b Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | qpa: Clean up and refactor qfontengine_qpaTor Arne Vestbø2014-05-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | QFontEngineQPA was really QFontEngineQPF2, and has been renamed. The multi font engine in qfontengine_qpa.cpp was really a base implementation of a multi font engine, used by other multi font engines, and has been renamed and moved accordingly into qfontengine_p.h/cpp. Change-Id: Iac7409c4dbf0fdc3ee993ce4f7dc96cb00a422e6 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-05-132-6/+169
|\| | | | | | | | | | | | | Manually changed enum to LibGL in src/plugins/platforms/xcb/qglxintegration.cpp Change-Id: If34ee6cce3d1d51fb4bb1fdfa59c30389ea0d207
| * Avoid showing warnings from drawPixmap when using a QGLWidgetLaszlo Agocs2014-05-051-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QGLWidget has a paint device type of Widget, yet drawing on it from outside the gui thread is fine as long as ThreadedOpenGL is supported. It has probably been overlooked that the device type OpenGL applies to QGLFramebufferObject and such but not QGLWidget. This will fix the problem of flooding the output with warnings in the tst_qglthreads autotest and potentially elsewhere too. Task-number: QTBUG-38771 Change-Id: Ie014a2610a0db41b31c30c404e286d4997aecdc3 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| * Vectorize bilinear rotating transformsAllan Sandfeld Jensen2014-05-051-0/+157
| | | | | | | | | | | | | | | | | | | | | | | | This patch reuses the code and pattern used to vectorize scaling, to also vectorize rotating transforms in fetchTransformedBilinearARGB32PM. This provides significant improvements in QtWebKit on benchmarks using rotating transforms. Change-Id: If250e0f5dae1ff0f954301f96cc8970a99ae3e9d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-05-065-32/+35
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/qnx-x86-qcc/qplatformdefs.h src/corelib/global/qglobal.h src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp src/opengl/qgl.cpp src/opengl/qglpixelbuffer.cpp src/opengl/qglshaderprogram.cpp tests/auto/opengl/qglthreads/tst_qglthreads.cpp Change-Id: Iaba137884d3526a139000ca26fee02bb27b5cdb5
| * Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2014-05-011-1/+1
| |\ | | | | | | | | | | | | | | | This merge adds the opengl rename. Change-Id: I84ea0b6abee9780ebb2cf3f64ab9e3fdf2acab3e
| | * Rename new QOpenGLContext APIsLaszlo Agocs2014-04-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | isES() becomes isOpenGLES(). The library type enums are changed DesktopGL -> LibGL and GLES2 -> LibGLES. This removes the now unnecessary version number, the confusing "desktop" term and provides better readability. The old function/values are kept until the related qtdeclarative changes are integrated. Task-number: QTBUG-38564 Change-Id: Ibb0a1209985f1ce4bb9451f9b7b093c2b68a6505 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * | Direct2D QPA: Optimize ClippingLouai Al-Khanji2014-04-252-29/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use axis aligned clips when possible instead of layer-clipping. This can be much faster when a lot of clipping operations take place. Change-Id: I6865d69fc917a7da858033b4c362b307724d9006 Reviewed-by: Risto Avila <risto.avila@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com>
| * | Remove unneeded ;Albert Astals Cid2014-04-242-2/+2
| |/ | | | | | | | | | | | | Warnings returned by pedantic Change-Id: I501621df6e9f39b18576625b321714a862dc971a Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | QtGui: Use Q_REQUIRED_RESULT in many more placesDavid Faure2014-05-025-28/+28
| | | | | | | | | | | | | | | | | | gcc doesn't yet warn when a non-POD return datatype is unused, but clang does, at least. Change-Id: Ia4c39001994ac09cf20e458bc5a66710bd11780c Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-04-1112-301/+541
|\| | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/qnx-armv7le-qcc/qplatformdefs.h src/printsupport/kernel/qcups.cpp src/widgets/styles/qstyle.h tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp Change-Id: Ia41e13051169a6d4a8a1267548e7d47b859bb267
| * QPageSize: remove QPageSize:: overqualificationsMarc Mutz2014-04-092-167/+167
| | | | | | | | | | | | | | | | This is not Qt style, not needed, and clutters the code, so remove QPageSize:: qualifications where they're not needed. Change-Id: Ia93ac9523ef43a40cf4dab3bcb383a54af666c96 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * QPageSize: clean up operator==Marc Mutz2014-04-081-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | Recognize that the d-pointer can never be nullptr and drop the nullptr checks. The d-pointer can never be nullptr as there's no move ctor and all other ctors create a QPageSizePrivate. Change-Id: I6c4e165949ed55510aefbc2d933f20fc8e624333 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QPageLayout: clean up operator==Marc Mutz2014-04-081-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | The old code always compared the Private classes, unless one of them was nullptr (which it never was, as there is no move ctor and all other ctors create a QPageLayoutPrivate. The new code compares the dpointers, and only if they differ, the Private classes. It also drops the nullptr checks, as they cannot trigger. Change-Id: I523c3503e2edb520f98f9b4e2e3bdaf28a9a355d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * QPageLayout: provide op!=Marc Mutz2014-04-082-0/+16
| | | | | | | | | | | | | | | | For consistency. Change-Id: I20fb70999785e2c1947f033d63367a2f6746990a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: John Layt <jlayt@kde.org>
| * QPageLayout: make op== non-memberMarc Mutz2014-04-082-7/+11
| | | | | | | | | | | | | | | | | | Better style, since it treats the left-hand and right-hand size symmetrically, e.g. for implicit conversions. Change-Id: Ib5d39b1ebffffcb664ee2f72c756702469e32d3b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QPageLayout: use QExplicitlySharedDataPointerMarc Mutz2014-04-082-1/+12
| | | | | | | | | | | | | | | | | | | | Many setters check for an actual change before making changes to data members, but because of QSharedDataPointer, the detach had already happened by the time the comparison returned false. Change-Id: I320806e74de4a64fa3a340831621c1f5120ebb0f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: John Layt <jlayt@kde.org>
| * QPageLayout: remove QPageLayout:: overqualificationsMarc Mutz2014-04-082-27/+27
| | | | | | | | | | | | | | | | | | This is not Qt style, not needed, and clutters the code, so remove QPageLayout:: qualifications where they're not needed. Change-Id: I62f90c29bcb9f3c137d319051ac79e081fe5fb69 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: John Layt <jlayt@kde.org>
| * QPageSize: provide op!=Marc Mutz2014-04-082-0/+10
| | | | | | | | | | | | | | | | For consistency. Change-Id: I4375a6f8c2514479a7479c735d397bf8a9876db1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: John Layt <jlayt@kde.org>
| * QPageSize: make op== non-memberMarc Mutz2014-04-082-6/+11
| | | | | | | | | | | | | | | | | | Better style, since it treats the left-hand and right-hand size symmetrically, e.g. for implicit conversions. Change-Id: If1ffa9dc2a018e402c884f60bfbc82e799daeb92 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QPageSize: mark ctors explicitMarc Mutz2014-04-081-6/+6
| | | | | | | | | | | | | | | | | | A QSize or QSizeF is not an accurate representation of a QPageSize, so the corresponding constructor should be explicit. Change-Id: I6b1808e5f93e3caef948c0e5300bd3c20e3c4210 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: John Layt <jlayt@kde.org>
| * QPageLayout: use existing qBound()Marc Mutz2014-04-071-9/+4
| | | | | | | | | | | | | | instead of rolling our own qt_clamp(). Change-Id: I2729ae3ff98e8c29c66f0f5c792b1bc7bf586f06 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * QPagedPaintDevice - Move QPageLayout methodsJohn Layt2014-04-055-61/+273
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new QPageLayout methods weren't originally added to QPagePaintDevice as no new virtuals can be added, instead static polymorphism was used to add the methods directly in the derived classes QPdfWriter and QPrinter. This however means that classes like QTextDocument with print() methods that take a QPagedPaintDevice are unable to access the QPageLayout methods. To fix this, instead make the QPagedPaintDevicePrivate a virtual class and have QPdfWriter and QPrinter implement derived private classes that are called by the non-virtual QPagedPaintDevice base methods. Change-Id: Ieb6e513b1fa05f5ae76ea1f9156b0b1a053089eb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Use Q_STATIC_ASSERT to check that the array has the right sizeThiago Macieira2014-04-051-12/+1
| | | | | | | | | | | | | | | | | | | | | | | | No need to sprinkle the code with Q_ASSERT. We don't want this to fail to the user anyway. By using a Q_STATIC_ASSERT, a failure will be immediately reported to the developer. This also solves a warning found by Clang 3.4: error: unused variable 'pageSizesCount' [-Werror,-Wunused-const-variable] Change-Id: I79cf72c64242ad395276ce4360c59ad81112d9eb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix neon image scaling function declarationsSamuli Piippo2014-04-041-2/+2
| | | | | | | | | | | | | | | | | | | | Change on the image scaling functions did not update the neon function declarations. Task-number: QTBUG-35927 Change-Id: Ia1e7428953aa140cad36e1cf26a18bfefc2267e7 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix UI squishing when using QWidget::setRenderToTextureJocelyn Turcotte2014-04-032-5/+7
| | | | | | | | | | | | | | | | | | | | When resizing a window, a window might not be resized synchronously with its backing store. We need to use the actual texture size as the transform to avoid stretching the rendered texture. Change-Id: I945f6d190577ccdcb54483a267a1e42df1ca3156 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Optimize QColor::setNamedColorJędrzej Nowacki2014-04-031-5/+4
| | | | | | | | | | | | | | This patch removes two memory allocations from the algorithm. Change-Id: I9366f9c5ce02fb1cae8adfbd8dff36c7f23af2a7 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | QPainter: Fix a hard to trigger null dereference in ↵Robin Burchell2014-04-031-0/+2
| | | | | | | | | | | | | | | | QPainterPrivate::drawTextItem. Done-with: Mohammed Hassan <mohammed.hassan@jollamobile.com> Change-Id: I24c724d24346fb5be8c4a66d68a11d51be5ad5f2 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* | QColor::colorNames(): reserve the result QStringListMarc Mutz2014-04-021-0/+1
| | | | | | | | | | | | | | | | | | Avoids reallocations. Change-Id: I56afcdb400d1e07394e62a610f838a33feda9fe8 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devIikka Eklund2014-04-018-27/+55
|\| | | | | | | Change-Id: I2a6eb9dd7724931bc89f28bcc156e77c4e26d069
| * Fix drawing paths with constant opacity onto PDFAllan Sandfeld Jensen2014-03-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | The native PDF strokes can not be used with constant opacity as any overlapping parts of the path will end up being drawn multiple times getting the wrong final opacity. A constant opacity should therefore be treated the same as opacity on the pen color, and trigger the fallback drawing. Task-number: QTBUG-37101 Change-Id: I44f70a8b494567ee89804a5fa6333304a5abe91e Reviewed-by: Michael Bruning <michael.bruning@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| * Avoid out of bounds memory reads when scaling imagesLars Knoll2014-03-287-26/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The calculation of the width/height required for the scaling algorithm was prone to floating point rounding issues, where the lower value got rounded down, the higher one rounded up. This could lead to a situation where we iterated over one more line/pixel in the line than we have in the source image. Correct this by passing the dimension of the source image into the function and bounds checking the values before iterating. Task-number: QTBUG-35927 Change-Id: If44b2235a479224660d508a0504fec40d724763a Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-03-2419-237/+4055
|\| | | | | | | | | | | | | Conflicts: src/gui/image/qjpeghandler.cpp Change-Id: I9db3acea7d5c82f5da679c8eaeb29431136665f0
| * Avoid QImage copy in toTexture()Morten Johan Sørvig2014-03-201-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Desktop OpenGL has GL_UNPACK_ROW_LENGTH which we can use use to specify the image row stride. This removes the need to call QImage::copy(). On a retina MacbBok pro this reduces toTexture's share of the total run time by 1-4%. (on tests/manual/ qopenglwidget/openglwidget) Change-Id: Ia7f49d5c4ffcc347a495701bbaca6aecc2dc3433 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>