summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidgetbackingstore.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix composition for windows with alphaLaszlo Agocs2014-08-131-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | While we will cover the entire surface with our textured quads, the clear is still necessary in order to make top-levels with TranslucentBackground render correctly: We don't want to blend transparent areas with undefined content that is in the surface's framebuffer. Blending is problematic for alpha values. We now prevent the blended alpha from being written out. This ensures that in examples like qquickviewcomparison, where the backingstore image contains an alpha of 0.5 while the QQuickWidget texture 1.0, the result is still an alpha value of 1.0 in the final image. Writing out an alpha of 0.5 would break on systems where windows get an alpha buffer by default. hellogl2 can now take a --transparent parameter which makes the QOpenGLWidget being cleared to transparent in order to verify it works in combination with Qt::WA_TranslucentBackground. The swapped red and blue problem is also corrected. RGBA8888 does not need swizzling. The only format that needs this is RGB32. Task-number: QTBUG-40716 Change-Id: I54a9fd3a91a1b59575b38cdb908835315514e40f Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Make QOpenGLWidget publicLaszlo Agocs2014-08-011-29/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | QOpenGLWidget is now public. In addition Qt::WA_AlwaysStackOnTop is introduced to support the special case of semi-transparent QOpenGLWidget or QQuickWidget on top of regular widgets. hellogl_es2 becomes the qopenglwidget example. This example performs painting both via QPainter and native GL commands and has the OpenGL widget combined with other, normal widgets. The widget stack receives some changes when it comes to renderToTexture widgets like QQuickWidget and QOpenGLWidget. Calling update() will now result in a paint event, which is essential for QOpenGLWidget since we want it to behave like a regular widget. The dirty region handling is extended specially for such widgets due to performance reasons. (an OpenGL content update must not result in any backingstore painting, and is thus handled as a different kind of dirtiness) [ChangeLog] Added QOpenGLWidget. This widget serves as a replacement for QGLWidget. Task-number: QTBUG-36899 Task-number: QTBUG-40086 Change-Id: Ibf7f82fea99b39edfffd2fc088e7e0eadbca25cf Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* WinRT: Fix compile warningsMaurice Kalinowski2014-05-261-0/+3
| | | | | Change-Id: If223dd73b9558a0f5144be38f19a61316f8c807b Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* Fix issue where revealed widget children do not receive paint event.Chris Colbert2014-03-041-2/+2
| | | | | | | | | | | | | | | | | | | | When a child of a widget is spontaneously revealed due to a call to the parent 'resize' method, the child will not receive a paint event if it has the WA_StaticContents and WA_OpaquePaintEvent flags set. This is caused by the backing store being pre-emptively resized by the call to setGeometry_sys, which causes QWidgetBackingStore::sync to skip the block which handles the static contents. There doesn't appear to be any reason to preemptively resize the backing store, since it is always resized as-needed during the the 'sync' method. This change-set removes the code which preemptively resizes the backing store. Task-number: QTBUG-35282 Change-Id: Ie9942854ca5322dfe0f98ed8100810161576be80 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Make bool arguments to QWidgetBackingStore::markDirty enumsJorgen Lind2014-02-281-49/+56
| | | | | | | | This is so we get some typesafty when refactoring, and I think it makes the code more readable Change-Id: Ia7531950d5f780dc98f4eb435c1e0050d76cdb5f Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Compile fix for QT_NO_OPENGLPaul Olav Tvete2014-02-241-3/+8
| | | | | Change-Id: I5ea962b0d77198945a4f87ad821d3c3dcffd260c Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* QWidget: do not allocate a QOpenGLContext unless needed by QQuickWidgetPaul Olav Tvete2014-02-221-9/+7
| | | | | | Task-number: QTBUG-36871 Change-Id: I739f270e9344f888593e04c6221807dbcf6cb55e Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* QOpenGLWidget and new-style compositing on eglfsLaszlo Agocs2014-02-131-2/+33
| | | | | | | | | Integrate with QOpenGLTextureBlitter, QOpenGLWidget and friends. Change-Id: Ic2867b713a21a3d2820d546174fc9164b3dd220c Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Enabling QQuickWidget and QOpenGLWidgetPaul Olav Tvete2014-02-121-10/+77
| | | | | | | | | Enable child widgets (without a native window) that render to an FBO and are composed with the raster backingstore by the platform plugin. A preliminary version of QOpenGLWidget is included as private API. Change-Id: I8f984a4d7db285069ce3d6564707942c823d890d Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Check whether exposed widget is mapped in QWidgetBackingStore::sync(QWidget*).Friedemann Kleint2014-02-121-4/+10
| | | | | | | | | | | Qt::WA_Mapped corresponds to 'exposed' in Qt 5, hence a parent window fully obscured by its children may not have the attribute set. In that case, go by the attribute of the child widget. Task-number: QTBUG-33520 Change-Id: Ia08f283172daaa58f58e5636004461b2c48784f7 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-01-101-9/+0
|\ | | | | | | Change-Id: I99af0bef7f1c931533a324ebcfb27c40ee871a5e
| * Fix QtWidget function-unused warnings found by Clang 3.4Thiago Macieira2014-01-101-9/+0
| | | | | | | | | | | | | | qwidgetbackingstore.cpp:72:20: error: unused function 'qRectIntersects' [-Werror,-Wunused-function] Change-Id: Ia3afe8f0547fa86804093281db89efabe68b34a1 Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* | WinRT: Fix Widget buildsAndrew Knight2013-09-271-3/+3
|/ | | | | | | | Tweak pri files and preprocessor usage to support widgets under WinRT. Change-Id: I6dc7d160078c0da343d6d39d2a0d52112c6f9f59 Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Fix license headers stating QtGui for QtWidgets files.Jake Petroules2013-03-191-1/+1
| | | | | Change-Id: I0ca49e3e1f9f603f0b0f7f3553e854b871efe303 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* QtWidgets: Fix QT_FLUSH_UPDATE for Windows.Friedemann Kleint2012-05-241-10/+22
| | | | | Change-Id: I09fd1ca6e7691b326760b83aad612e9a26717379 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Fix backingstore crash with QAxWidgetsMiikka Heikkinen2012-05-181-4/+3
| | | | | | | | | | | | | | The crash was caused by the fact that backingStore parameter is always null (there seems to be no call in codebase that uses anything else but the default values for this function). Using "store" member variable instead of "backingStore" parameter gets rid of the crash, and it is how it was in Qt4 - probably the bug crept in when the paremeter and member variables were renamed in Qt5. Task-number: QTBUG-25803 Change-Id: I4b1ccf540fddd6baa1dffa7f8165272b54caf238 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Don't flush WA_DontShowOnScreen widgets.Morten Johan Sorvig2012-05-041-0/+4
| | | | | | | | | QBackingStore::flush expects that windows have gotten expose events before flush is called. Not on screen -> no expose events -> don't call flush. Change-Id: Id868888566fe672939f3c5775f9f371fb3240ee8 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Merge remote-tracking branch 'origin/master' into api_changesLars Knoll2012-04-161-50/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure src/corelib/io/qurl.cpp src/gui/kernel/qwindow.cpp src/tools/moc/generator.cpp src/widgets/kernel/qwidget_qpa.cpp src/widgets/styles/qstyle.h src/widgets/widgets/qtabbar.cpp tests/auto/corelib/codecs/utf8/tst_utf8.cpp Change-Id: Ia457228d6f684ec8184e13e8fcc9d25857b1751e
| * Remove hasDirtyFromPreviousSync from backingstore.Girish Ramakrishnan2012-04-121-5/+1
| | | | | | | | | | | | | | It's always false (used to be some qws specific variable). Change-Id: I3dc185dba4c778797f180410ce8d293336ecfd9c Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
| * remove references to qws from backingstoreGirish Ramakrishnan2012-04-121-45/+1
| | | | | | | | | | | | | | | | The backingstore code is already hard to read as-is. Let's simplify things by removing qws code. Change-Id: Ibefd3ea17d29970d1f7348461959fdc5b01c1f42 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* | Remove WA_PaintOutsidePaintEventDebao Zhang2012-03-281-1/+1
| | | | | | | | | | | | | | | | | | WA_PaintOutsidePaintEvent is only suggested to be used when porting Qt3 code to Qt 4 under X11 platform. and it has been broken now. Change-Id: Ie4297b2a449f1055ca10ada9efb930e6018b1efb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | Got rid of Map / Unmap events in favor of Expose event.Samuel Rødal2012-03-221-23/+4
|/ | | | | | | | | | | | | | | | | | Since change 2e4d8f67a871f2033 the need for Map and Unmap events has gone away, as now the Expose event is used to notify the application about when it can start rendering. The Map and Unmap events weren't really used except by QWidget to set the WA_Mapped flag, which we now set based on the expose / unexpose. Also guarantee that a Resize event is always sent before the first Expose, by re-introducing an asynchronous expose event handler. Since an expose is required before rendering to a QWindow, show a warning if QOpenGLContext::swapBuffers() or QBackingStore::flush() if called on a window that has not received its first expose. Change-Id: Ia6b609aa275d5b463b5011a96f2fd9bbe52e9bc4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Updated QApplication / QGuiApplication to match Qt 5 reality.Samuel Rødal2012-02-221-2/+0
| | | | | | | | Removed obsolete Q_WS_X11/WIN/MAC stuff as well. Change-Id: I8b65a0348a8cb170f3f060023fc6d9d982949b7e Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com> Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | 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: I311e001373776812699d6efc045b5f742890c689 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update contact information in license headers.Jason McDonald2012-01-231-1/+1
| | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: I431bbbf76d7c27d8b502f87947675c116994c415 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update copyright year in license headers.Jason McDonald2012-01-051-1/+1
| | | | | Change-Id: I02f2c620296fcd91d4967d58767ea33fc4e1e7dc Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Fixed tst_QGL::partialGLWidgetUpdates.Samuel Rødal2011-09-071-4/+1
| | | | | | | Change-Id: Ie37051e28b199b5d159f5be05be41efbd17fdf08 Reviewed-on: http://codereview.qt.nokia.com/4273 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* Rename QWindowSurface -> QBackingStore and split into platform / public.Samuel Rødal2011-06-211-0/+1396
Also get rid of GL window surface and related classes.