summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* QDateTime: use the more efficient currentMSecsSinceEpoch()Thiago Macieira2016-07-023-3/+3
| | | | | | | ... instead of creating a QDateTime object. Change-Id: Ib57b52598e2f452985e9fffd145a36911de4fa9a Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QFormLayout: Remove internal, unused functionsThiago Macieira2016-07-021-28/+0
| | | | | | | | | | Found by the Intel Compiler 17 Beta on Windows: qformlayout.cpp(68): error #177: function "<unnamed>::FixedColumnMatrix<T, NumColumns>::addRow [with T=QFormLayoutItem *, NumColumns=2]" was declared but never referenced Change-Id: Ib57b52598e2f452985e9fffd1458f6a3c3a609dc Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QDataStream: unify deserialization of containersAlex Trotsenko2016-07-012-23/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Serialization of the Qt container classes is accomplished by breaking up the data into primitive units. On the receiver side, these units should be read atomically to guarantee integrity of the container. Deserialization procedures for QHash and QMap were already implemented in accordance with this strategy and have the following behavior: - a previously latched error status is saved for the caller. This overrides possible different errors in the current read. This is consistent with the treatment of primitive types. - if an error occurs during the deserialization, the container is cleared. To make the API consistent, this patch adjusts the behavior of QList, QLinkedList, QVector, and QSet deserialization. On the implementation side we accomplish this with a private StreamStateSaver RAII class that consolidates the handling of the stream status for all containers. [ChangeLog][Important Behavior Changes][QtCore][QDataStream] Incomplete reads of Qt containers are now handled same way as for primitive types, meaning that previous errors are latched. Task-number: QTBUG-54022 Change-Id: I5c77257fe2a4637e8a7e6cf3cd43091c8469340e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Diaglib: Build DebugProxyStyle only when QtWidgets are usedFriedemann Kleint2016-07-011-4/+6
| | | | | Change-Id: Iba1ca731ac569db12211a93f65583d73ffcfce91 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* xcb: Send expose event while shrinking windowsBłażej Szczygieł2016-06-303-0/+29
| | | | | | | | | | | | | Send synthesized expose event while shrinking the QWindow. This fixes the regression which can break some applications which need the paint events while shrinking the QWindow. Added auto test. Task-number: QTBUG-54040 Change-Id: Iaa992abba67f428237fa12c6cae56592b8fcadb0 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io> Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
* QAbstractItemView: avoid search through QIndexEditorHashAnton Kudryavtsev2016-06-301-1/+2
| | | | | | | | | | Search's implicit cast (QModelIndex to QPersistentModelIndex) is slow. Use cheap pre-test to avoid when we can. Use method from 1d859ef80540ec3dd64f4f7bda3a8e415965650c Change-Id: Ic3d06869de717963bad6357abb99f3e025642078 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7Liang Qi2016-06-2915-19/+72
|\
| * Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-06-2915-19/+72
| |\ | | | | | | | | | Change-Id: If6ba05867e7c98159e1b94ff71923e8b36bdbccb
| | * Improve SQLite3 configuration testJames McDonnell2016-06-281-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reference an SQLite3 function to verify that the library is being linked. Discovered that the test didn't do this when I switched the Windows configure to use a compile test to determine whether the system has SQLite3. The test passed even though the initial configure changes failed to provide the test with information about the SQLite3 libraries. Change-Id: I3114cfc2dec3a42a60c8e1e432eb8375b440d7e0 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| | * Avoid artifacts when hiding or closing a QOpenGLWidget or QQuickWidget childLaszlo Agocs2016-06-283-2/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | windows and xcb enables SwitchableWidgetComposition meaning that widget backing stores will fall back to the normal flush path when no render-to-texture widgets are visible anymore in the window. This switch however can lead to artifacts with the image of the rtt widget remaining visible until the next full bacinkgstore sync. The safe and simple way around this is to do the switch only in the next flush, keeping the flush where the switch is discovered on the OpenGL-based composition path still. Task-number: QTBUG-54241 Change-Id: I1d3f10999f69c58efa791dd724891add56949dee Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| | * NetBSD: enable detection of posix_fallocate()Ralf Nolden2016-06-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | posix_fallocate() is declared in unistd.h on NetBSD. Add the include for proper detection on NetBSD 7.0 and up. See http://netbsd.gw.com/cgi-bin/man-cgi?posix_fallocate++NetBSD-current As that is violating the POSIX standards, a PR was opened at NetBSD under http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=51287 for further tracking of the issue. Change-Id: I40ec320677eef37bbc39f58e0bbac34f8cf7b8da Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * NetBSD: use paccept() where accept4() is usedRalf Nolden2016-06-282-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Where accept4() is used, NetBSD offers paccept() as a replacement function. Modify check for using accept4() and use paccept() on NetBSD. See http://netbsd.gw.com/cgi-bin/man-cgi?paccept++NetBSD-current and http://reviews.llvm.org/D12485 Change-Id: I9b3ecba5f3afad6c357d3f7b8f89589bf313e273 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Libpng config.tests: use pkg-config when availableRalf Nolden2016-06-272-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add pkg-config to the libpng usages as not all systems have the symlink libpng.so -> libpng<version>.so (affected: NetBSD) that changes with the version of the lib. If no-pkg-config is used, use -lpng as before. Tested with FreeBSD 10.3, NetBSD 7.0.1 using png 1.6.21 Change-Id: I5c87f380c84da3d5c56c94da53adb900791c8caa Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| | * QDockWidget: fix floating group tab window not having the right titleOlivier Goffart2016-06-252-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before, we were relying on the ZOrderChange event to update the windows title or other flags of a floating tab window when tabs are changed. But this did not catch all the cases. For example, the first tab switch, or when tabs are dragged out. Task-number: QTBUG-53754 Task-number: QTBUG-52107 Change-Id: I1523ce85ceaa95f044bd81f8ccbac0a86978fb33 Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
| | * mainwindow example: fix creating custom QDockWidgetOlivier Goffart2016-06-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The signal was connected to the wrong slot. Regressed in 2fe56e37ede40dc703a9c3c8eb240b80c9c00757. Change-Id: I33135fc79c3585dfbe0f6ebc04f819e919ed9ed7 Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
| | * Doc: Remove obsolete QtWebKit entries from the example metadataTopi Reinio2016-06-241-27/+3
| | | | | | | | | | | | | | | Change-Id: I60caf454ae7e5f6e0c0bd2c2eb1934bc0f7e3fba Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
| | * Add -no-opengles3 to configure to avoid QT_OPENGL_ES_3 define.Gunnar Sletta2016-06-231-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This can be helpful for packaging and when one wants to limit the features to ES 2.0 to ensure the same code is used on both build machine and deployment machine. It also prevents inclusion of GLES3/gl3.h. Windows configure.exe doesn't do auto detection of GLES3 so it does not get the additional option. Change-Id: I8750b41635e41bd0ac41d9d59d93570f7d2196e6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| | * Document limitations and good practice for logging category namesKai Koehne2016-06-231-0/+9
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-54238 Change-Id: I2b6f54fb26d24e6da19c0e09782483eeb10206e1 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | QAbstractItemView: use erase and std::remove_if with QListAnton Kudryavtsev2016-06-291-6/+5
|/ / | | | | | | | | | | | | | | ... instead of using erase() in a loop, with quadratic complexity. Change-Id: Id9c70a0d1d27b5057e5bf64c315bd66cbcd67330 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | fix default inc/lib path detection on msysOswald Buddenhagen2016-06-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | using the Makefile target separator to determine the host system is of course not a terribly good idea. the correct variable to query would be DIR_SEPARATOR, which always reflects the host. however, a direct os query is less obscure in this case. Task-number: QTBUG-54346 Change-Id: I6bc1372a7c9a84a241a97f9f767f046b026411c3 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | Widgets: use QStringRef to optimize memory allocationAnton Kudryavtsev2016-06-243-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | Replace substring functions that return QString with corresponding functions that return QStringRef where it's possible. Create QString from QStringRef only where necessary. Change-Id: I728c4338135f83d9cdff4d1ee1aed77f95d453b8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | don't override user-provided dependencies for our extra compilersOswald Buddenhagen2016-06-238-19/+19
| | | | | | | | | | | | | | | | | | | | | | while the names of the compilers are actually an undocumented internal, we don't provide an actually working proper way to sequence extra compiler execution with build-time generated inputs when they are indirectly listed (as via .qrc files). Task-number: QTBUG-54299 Change-Id: I269c26512897b72706dc8b769aa47e8157c2a5c5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-06-2337-65/+225
|\| | | | | | | | | | | | | | | Conflicts: src/angle/src/libGLESv2/libGLESv2.pro src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp Change-Id: If8da4cfe8f57fea9f78e7239f378a6302c01674e
| * Win: Get rid of unused variables un QDateTime::currentMSecsSinceEpochThiago Macieira2016-06-221-2/+0
| | | | | | | | | | | | | | | | The compiler didn't complain that they were unused or -Werror / -WX was not active. Change-Id: Ib57b52598e2f452985e9fffd145a7b63a32189fd Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
| * Fix inconsistency between the #if guards in SSL PSK codeLiang Qi2016-06-221-2/+2
| | | | | | | | | | | | | | | | The declaration and definition of the forwarding functions for PSK differed which leads to link errors with some versions of openssl. Change-Id: I40410f62a584c5dbd2acf5c90422e1243514f8fd Reviewed-by: Richard J. Moore <rich@kde.org>
| * Fix installation of debug symbols on Apple platforms.Jake Petroules2016-06-221-2/+21
| | | | | | | | | | | | | | | | | | This follows up ab599a39313c22fd14cc5466cea5c61bbcdbba8e, which did not take installation into account. Task-number: QTBUG-54036 Change-Id: Ic1b3acb8984255dd1ca1c288b7b150814ce9e606 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * Add OpenBSD to list of targets that can't use --no-undefined in qtcoreRalf Nolden2016-06-221-2/+3
| | | | | | | | | | | | | | | | | | | | | | A prior commit has already added the resetting of QMAKE_LFLAGS_NOUNDEF in corelib.pro for FreeBSD due to environ(7) not being part of libc. OpenBSD has the same issue, so add it to the list of BSD systems affected for resetting the flags for qtcore. Change-Id: I50a62271ffa05a9976e802de420d47a1425359c4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Fix regression in simple RGB16->RGB16 scalingAllan Sandfeld Jensen2016-06-221-1/+1
| | | | | | | | | | | | | | | | | | | | The fix for QTBUG-35927 introduced a too strict check when scaling from a 16-bit source to a 16-bit destination. This patch changes the limit to adjust to source type. Task-number: QTBUG-54281 Change-Id: I6dd2bb8308f77520c00fa3ef6643a42462c5d351 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * purge vestige: plugin_no_soname is no moreOswald Buddenhagen2016-06-2213-13/+8
| | | | | | | | | | | | | | | | ... for a loooong time. it was replaced by plugin_with_soname (which is unused so far). Change-Id: Ifc377d155d6eac41e85f3a0914ed817d55b5648b Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * fix make -i wreaking havoc in configure tests outside qtbaseOswald Buddenhagen2016-06-221-1/+11
| | | | | | | | | | | | | | the tests would inherit MAKEFLAGS, with somewhat predicatble results. Change-Id: Ia17638f6229d0ae86f5558726850040703d90044 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * fix double installation of ANGLE libraries in static+dynamicgl buildsOswald Buddenhagen2016-06-221-6/+6
| | | | | | | | | | | | | | | | | | | | | | CONFIG static/shared needs to be manipulated before it is used by qt_installs.prf (via qt_helper_lib.prf via config.pri). amends 2311997. Task-number: QTBUG-54109 Change-Id: Icb53f3170e6d6f09d60b77a221f4f239c6e6721f Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * limit installation of ANGLE translator and preprocessor helper librariesOswald Buddenhagen2016-06-223-1/+3
| | | | | | | | | | | | | | | | | | | | | | libGLES2 (the only user of these libraries) is built dynamically even in a static qt built when dynamicgl is configured. in this case the static libraries need not be installed. amends 2311997. Change-Id: Ic9bc3937d6ee0d97e0ca7fc96596fa90ebfe8710 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * don't duplicate CONFIG+=installedOswald Buddenhagen2016-06-222-2/+1
| | | | | | | | | | | | | | | | | | the included common.pri already does it. amends 9ab41425. Change-Id: If8c9285b92485b6574fde2adc2b92cc44f139ea0 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * make plugin meta data load failure error message less crypticOswald Buddenhagen2016-06-221-1/+1
| | | | | | | | | | Change-Id: I280673e7fd582c5877e8e17ed00318cb10cd537c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Add some 64-bit QNX platformsJames McDonnell2016-06-226-0/+148
| | | | | | | | | | | | | | | | | | Add x86-64 and aarch64le QNX platforms. These platforms will be available in QNX 7.0. Change-Id: Iba1f635ba45fddf1a1caf907415a23a510ba0818 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * QDesktopScreenWidget::screenNumber(): Use native geometry.Friedemann Kleint2016-06-221-8/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | Coordinates in device independent pixels are not suitable for checking intersection of screen areas since the screen positions are always unscaled. Move the code to determine the QWindow handle out and transform the frame to device pixels and use QPlatformScreen to check. Change-Id: Idd94f32abc43bc7a04e4056243b7f810631f70cc Task-number: QTBUG-52606 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| * Revert "End the drag if the dockwidget is being hidden"Olivier Goffart2016-06-221-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 75b705fec8e9517047d7dfa98203edff69f2bf8a and 798e0064e9be78f8320ff25a9af50d1b5e5badb1. This broke drag and drop of QDockWidget if there is no animations (QTBUG-54185) and this caused numerous crash with GrouppedDragging: crashes when dropping on another floating QDockWidget, or when dragging away. The problem being that 'endDrag' would cause the QDockWidget to be hiden temporarily and it would recurse into 'endDrag' and have unwanted effects Task-number: QTBUG-54185 Change-Id: Icad9c6748448783e039bde205b60133f89f25e8e Reviewed-by: Andy Shaw <andy.shaw@qt.io>
| * eglfs: Fix static builds with kms backendsLaszlo Agocs2016-06-211-20/+23
| | | | | | | | | | | | | | | | | | | | | | | | The logging category symbol clashed when linking applications with both kms backends present. This is no longer an issue in 5.7 where the symbol is in the shared kms support lib, but for 5.6 we need to use a different symbol name. Change-Id: I3c323109d6c498e044289455b3d31567a4d5928c Reviewed-by: Ralf Nolden <nolden@kde.org> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
| * UIKit: Treat windows as exposed only during Qt::ApplicationStateActiveTor Arne Vestbø2016-06-212-21/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | We previously treated Qt::ApplicationStateInactive as a valid state to expose windows in, to prevent a visible flash of black screen at app startup between iOS hiding the launch screen and Qt drawing it's first frame, but this lag is no longer an issue, so we can apply the best practice of only rendering during Qt::ApplicationStateActive. This may prevent crashes during application suspension. Task-number: QTBUG-52493 Change-Id: I271281ed6fb857e6849cdb88cc2d8251d1bba1df Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| * Add PowerVR SGX 554 to the BGRA blacklistAndy Shaw2016-06-201-1/+2
| | | | | | | | | | | | | | | | | | PowerVR SGX 554 is used in iPad wi-fi (4th generation) and blacklisting it solves a problem with grabToImage() in QQuickItem. Task-number: QTBUG-45902 Change-Id: I4b6210a48f70614c4364fc63692c97652836f5d3 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | Remove duplicated QT_HAS_BUILTIN defineBogDan Vatra2016-06-211-6/+0
| | | | | | | | | | | | | | | | | | QT_HAS_BUILTIN is already defined in qcompilerdetection.h which is included in qglobal.h which is included in this header file. Task-number: QTBUG-54068 Change-Id: I46c2e13d85fc21d3e6c426d0f35a584b21ae792b Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7Liang Qi2016-06-2077-559/+962
|\ \
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-06-2077-559/+962
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And blacklisted a few tests in tst_QUdpSocket. Conflicts: src/android/jar/src/org/qtproject/qt5/android/QtNative.java src/corelib/global/qglobal.cpp src/corelib/global/qsystemdetection.h src/corelib/io/qfileselector.cpp src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp tests/auto/network/socket/qudpsocket/BLACKLIST Task-number: QTBUG-54205 Change-Id: I11dd1c90186eb1b847d45be87a26041f61d89ef6
| | * Remove overload tag from QByteArray QIODevice::readAll()Simon Hausmann2016-06-171-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | This does not seem to be a function that is overloaded. Change-Id: Icf8942dfb1e78a2ddb38cbd1c49657f745a61989 Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Fix build on macOS: Apple changed their minds if null is allowedThiago Macieira2016-06-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qcorewlanengine.mm:88:37: error: null passed to a callee that requires a non-null argument [-Werror,-Wnonnull] currentInterface = [CWInterface interfaceWithName:nil]; ^ ~~~ Change-Id: Ie7d159a97176ca53161423cfcddba547e735d5b3 Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * eglfs_kms_egldevice: fix warnings about -Werror=maybe-uninitializedLiang Qi2016-06-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp: In member function ‘bool QEglFSKmsEglDeviceIntegration::setup_kms()’: src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp:391:28: error: ‘encoder’ may be used uninitialized in this function [-Werror=maybe-uninitialized] m_drm_encoder = encoder; ^ src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp:392:29: error: ‘connector’ may be used uninitialized in this function [-Werror=maybe-uninitialized] m_drm_mode = connector->modes[0]; ^ cc1plus: all warnings being treated as errors Change-Id: Ic444450d06a6dd8047bd6871febb08a4a3fde6f9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * UIKit: Detect swapBuffers on non-exposed windows and skip flushTor Arne Vestbø2016-06-171-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using threaded rendering the render-thread might be half-way into rendering a frame when the application is backgrounded, resulting in the following swap happening on a non-exposed window. This may result in the system killing the application, as rendering is not supposed to happen when an application is backgrounded, so we skip the flush. Change-Id: I9ab8f2c4617391fd827558af9fb473f1734b3688 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | * UIKit: Ensure that Qt's application state is initialized at startupTor Arne Vestbø2016-06-172-95/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using dispatch_async to deliver the initial application state at startup was broken, as that would leave the application in the default application state, inactive, until the next runloop pass. This became a problem when an application was started backgrounded, eg. in response to location updates or a Bluetooth accessory waking it up, as it would have a small window of time at startup where it would think it was able to render content (since the window was exposed), while in fact the application was running in the background. iOS will in these situations kill the app for doing background rendering. Change-Id: I1ab4a6af08a154d8625c6451b4b5c8f4453e6b43 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | * UIKit: Don't reallocate renderbuffer on QIOSContext::swapBuffers()Tor Arne Vestbø2016-06-174-67/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During device rotation, the backing CEAGLLayer of our custom UIView is resized by the system. Normally this is the time where we would then reconfigure the corresponding renderbuffer that we render to, which shares memory with the CEAGLLayer, but we chose a lazy approach where we'd defer the reconfigure until client code actually called makeCurrent. This caused problems because not only did we implement the lazy reconfig in makeCurrent, but in every QIOSContext function that operated on the default FBO, including swapBuffers(). When using threaded rendering, such as in Qt Quick, the render thread may be half way in rendering a new frame when the system resizes the CEAGLLayer, and we pick up that resize on the swapBuffer call and allocate a new renderbuffer, before flushing the queued up GL commands that were operating on another renderbuffer of a different size. This resulted in the following crash: 0 - gpus_ReturnObjectErrorKillClient() 1 - gpusSubmitDataBuffers() 2 - glrFlushContextToken() 3 - flush(__GLIContextRec*)() 4 - QIOSContext::swapBuffers(QPlatformSurface*) ... We solve this by still being lazy in how we reconfigure, but limit the reconfigure to makeCurrent(). If the CEAGLLayer is resized in between two frames, we skip the half-drawn frame. The old frame will then be scaled to match the new size by the system, but this is preferable to flushing a new frame that may have been drawn with two conflicting window geometries. Task-number: QTBUG-50017 Change-Id: Ie229f26d156dfbfc7ed8d9efd0eb5e992eee73f1 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | * uikit: Deliver update requests via CADisplayLink callbackTor Arne Vestbø2016-06-174-0/+70
| | | | | | | | | | | | | | | | | | | | | | | | Improves performance over the default timer-implementation, and allows us to control the rate and paused state of the display link. Change-Id: I05761b6eb48f5e91af35735e2faa477427cd8440 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>