summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-09-2628-305/+496
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/kernel/qguiapplication.cpp src/platformsupport/input/libinput/qlibinputpointer.cpp src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h src/plugins/platforms/cocoa/qcocoawindow.h src/testlib/qtestsystem.h Change-Id: I5975ffb3261c2dd82fe02ec4e57df7c0950226c5
| * Remove obsolete version checksJake Petroules2017-09-253-35/+10
| | | | | | | | | | | | | | Our iOS deployment target is now 8, so this code will never be executed. Change-Id: I7dd4001c01d7c8c2e8e977753cb3fa246b19ce06 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
| * macOS touch and gestures: pay attention to deviceIDShawn Rutledge2017-09-213-24/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we pretended that there is only one touch device; but in fact, different trackpads have different deviceIDs, and this may be useful in some scenarios to tell them apart, as on other platforms. So far we don't expect to get touch events from actual touchscreens though, because macOS only turns single-touch events into mouse events and does not interpret gestures on touchscreens. So there isn't API which can distinguish touchscreens from touchpads as far as we know. QCocoaTouch::getTouchDevice() takes the type as a parameter, just in case this changes some day. Change-Id: I56228471363235c5d0cc2a55a35a3c3288f3b1a1 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
| * make the QTouchDevice available in each QNativeGestureEventShawn Rutledge2017-09-211-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QtQuick is beginning to have a use for this, to distinguish native gestures which come from actual trackpad rather than from the "core pointer". It might as well use a real device ID instead of making one up, as it has to do for the core pointer. So far on macOS, the device ID isn't a real one; but that can be fixed, as the qCDebug lines demonstrate (different trackpads have different IDs). Change-Id: I5841deb1c4cc0b77a3b1df70904f70b3d2d71853 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
| * Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2017-09-203-11/+26
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/styles/mac/qmacstyle_mac.mm src/widgets/util/qcompleter.cpp src/widgets/widgets/qmainwindowlayout.cpp src/widgets/widgets/qmdisubwindow.cpp Change-Id: If0e96981af07ce36ac68f2e69211bc2120f93973
| | * windows: Blacklist Intel 8.15.10.1749Laszlo Agocs2017-09-191-1/+16
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-56360 Change-Id: I438e58e13b364a7c4748a4325cb7ff00bb00b25b Reviewed-by: Joni Poikelin <joni.poikelin@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| | * Cocoa: Update the known menu items when the QCocoaMenuBar is deletedAndy Shaw2017-09-081-8/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If an application has more than one menubar, for instance, one for each mainwindow it has visible then once one is deleted it needs to ensure the application menu items are updated as appropriate. To do this the resetting of the known menu items is extended to cover all the application specific ones so that they can all be updated correctly. Task-number: QTBUG-62193 Change-Id: I61f46a4745f4e40b9283d40fa5a7473f2721c354 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
| | * Cocoa: Check if charactersIgnoringModifiers is not empty tooAndy Shaw2017-09-081-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a dead key occurs as a result of pressing a key combination then characters will have 0 length, but charactersIgnoringModifiers will have a valid character in it. This enables key combinations such as ALT+E to be used as a shortcut with an English keyboard even though pressing ALT+E will give a dead key while doing normal text input. Task-number: QTBUG-57933 Change-Id: I52fe9edacefe7298a96af5430831f805626bacd2 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * | Merge "Merge remote-tracking branch 'origin/5.9' into 5.10" into ↵Liang Qi2017-09-064-4/+54
| |\ \ | | | | | | | | | | | | refs/staging/5.10
| | * | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2017-09-064-4/+54
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/opengl/qopenglwidget/main.cpp src/3rdparty/pcre2/src/pcre2_printint.c src/plugins/platforms/cocoa/qnsview.mm src/widgets/widgets/qcombobox.cpp Change-Id: I37ced9da1e8056f95851568bcc52cd5dc34f56af
| | | * Windows QPA: Do not call EnableNonClientDpiScaling() on Desktop GL WindowsFriedemann Kleint2017-09-051-3/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It causes artifacts when moving the windows between monitors. Amends e8ecde99df8dc8959e1a5af679961cb946ccae69. Task-number: QTBUG-53255 Task-number: QTBUG-62901 Change-Id: Ia8b0f760370887a75efa05bc9736075afebfe069 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
| | | * macOS: Don’t color convert the backing storeMorten Johan Sørvig2017-09-051-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The backing store was assigned the sRGB color profile as an unintended side effect of the QImage -> CGImage conversion function refactoring in ac899f6d. This caused Core Graphics to add a color convert step, which in some cases caused performance issues. Restore fast, previous behavior by assigning the target display color profile to the backing store image. Color correctness is still a goal, but we’ll add API for it and make it opt-in. Task-number: QTBUG-61384 Change-Id: I107f06a881a34fa711b386265d8dc2edfb246624 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| | | * macOS: Reset composition when focus object changes inside windowEskil Abrahamsen Blomfeldt2017-09-043-1/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the focus object inside a window changes and we are currently composing text, we have to cancel composition to avoid getting into an inconsistent state. This is what already happens if you switch to a different top level window. Note: Because we limit the user's ability to change focus inside a window when composing text, this would only happen under certain circumstances, such as creating a new MDI window with an editor while still composing text in a previous one. [ChangeLog][macOS] Switching focus objects inside a top level window while composing text using dead keys or input method events would leave the application in an inconsistent state. The composition now automatically cancels when the focus object changes. Task-number: QTBUG-59222 Change-Id: I06792a7db1441dcc5c87e4bf0861b422a25f7f7c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * | | QCocoaKeyMapper: Remove unused member variablesGabriel de Dietrich2017-09-062-13/+0
| |/ / | | | | | | | | | | | | | | | | | | These are written into, but never read from. Change-Id: I23af5dbb2d162b06ed93f32459140a8385d65a95 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * | vnc: remove unused qlibinputhandler_p.h includeGatis Paeglis2017-09-051-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | It has been there since the first commit 6d70e543aa64fb9d618d899977ce9a7c10967944 of VNC platform plugin, and it has never actually been used. Change-Id: I6a9c4e6a27de042e18650fa88728a1849a99b094 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| * | macOS: Don’t color convert the backing storeMorten Johan Sørvig2017-09-051-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The backing store was assigned the sRGB color profile as an unintended side effect of the QImage -> CGImage conversion function refactoring in ac899f6d. This caused Core Graphics to add a color convert step, which in some cases caused performance issues. Restore fast, previous behavior by assigning the target display color profile to the backing store image. Color correctness is still a goal, but we’ll add API for it and make it opt-in. Task-number: QTBUG-61384 Change-Id: Ia36d29404c64d8030a100f6a71816d84e484308b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * | Windows: Make dropped files be opened or attachedAndre de la Rocha2017-09-054-2/+165
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds QWindowsDropDataObject as a QWindowsOleDataObject subclass specialized for handling Drag & Drop, which only allows "text/uri-list" data to be exported as CF_HDROP, to allow files dragged from Qt applications and dropped into other applications to be recognized as attachments or opened. Otherwise, files would be imported as URLs and inserted as local hyperlinks. [ChangeLog][Important Behavior Changes][Windows] On Windows, a drag & drop operation of local files URIs, like QListView items backed by a QFileSystemModel, will result in the attachment or opening of the files by the target application, instead of the creation of hyperlinks. Task-number: QTBUG-62662 Change-Id: I51efa4a56574b5e5fb3ee736ede14b5da24caac4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * | macOS: Fix support for issuing requestUpdate during expose eventTor Arne Vestbø2017-09-051-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AppKit will clear the needsDisplay state of a view when finishing the display cycle, so if the client requested an update when delivering the expose event, the update request would not be delivered unless the view was otherwise exposed in some way at a later point. Task-number: QTBUG-62964 Task-number: QTBUG-62963 Change-Id: I5ac9bf2f19af775294d093c8b7a414af22efee92 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * | iOS: Fix implicit conversion warning in QIOSEventDispatcherTor Arne Vestbø2017-09-041-1/+1
| | | | | | | | | | | | | | | Change-Id: Id9650dde73e1cfbe8626b4d31b86e9bbf007be89 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
| * | eglfs_x11: remove unused event handlersGatis Paeglis2017-09-041-71/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Logic that utilizes these event handlers was added by f610814b058b4639ef0d4d2592a8bcc3f81c974d and few months later broken by 2b20ed5af4d10533a14477750c7572ef09e60005. The original code used an event mask to select press/release/ motion events when creating window with XCreateWindow. The XCB replacement (xcb_create_window) changed event mask to 0, which means that these event handlers have been unused for about ~4 years and can be safely removed. The eglfs_x11 integration receives mouse input directly from libinput/evedev. Change-Id: Iac1521365445b8423898a16c3e609deb0806ce5e Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| * | Merge dev into 5.10Frederik Gladhorn2017-09-0219-159/+79
| |\ \ | | | | | | | | | | | | Change-Id: I5fb5e7e6e57bb5db6fcb1f670f7f6cbc8def2d60
| * | | macOS: Respect responder chain when setting cursorTor Arne Vestbø2017-09-014-45/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's no need for us to walk our own ancestor chain to figure out which cursor to set. AppKit will automatically call cursorUpdate: on the view that would be the hitTest target of the current mouse position, and by falling back to super when no cursor is set for the current view, we automatically get the behavior that effectiveWindowCursor tried to solve. In addition, it solves the case of applyEffectiveWindowCursor applying the arrowCursor when no cursor was set, which would mean that if any native parent view of our view _did_ have a cursor set, we would not fall back to the native view's cursor, but instead override it with the arrow cursor. Following the responder chain gives the correct behavior in this case. Unfortunately, due to rdar://34183708, if a subview of one of our views uses the legacy cursorRect approach to cursor management, the cursor will not be reset back to our cursor via cursorUpdate: when leaving the child and entering the parent view (our view). Moving our implementation over to the legacy API would solve this problem, but just propagate it to native parent views of our views, which could potentially use NSTrackingAreas, and would not have _their_ cursors re-set. Change-Id: Id20cc03136f0b1d4b9120750fe63ddc455363aaf Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * | | macOS: Modernize masking of windowsTor Arne Vestbø2017-09-016-73/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of masking window blitting via a CGImage mask, we use the window's mask directly to intersect the region that we blit during flushing of the QCocoaBackingStore. This approach also enables masking of child windows. We now also support setting a mask for layer-backed views, by setting a CAShapeLayer as the layer's mask. The window shadow invalidation has been moved out of QNSView, as the view should not be involved in that process. For layer-backed views, the shadow is not invalidated as expected after the initial mask has been set, but this bug has been left as a fix for a later stage as it requires more research. Change-Id: Ie0127d8df49d95b2d6144816b19559f3d3c95d13 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * | | macOS: Forward [QNSViewMouseMoveHelper cursorUpdate:] to viewTor Arne Vestbø2017-09-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calling [self cursorUpdate:] doesn't make much sense, and was probably an oversight. The event is also delivered straight to the view, not to the owner of the tracking area (as the documentation says it should), but we keep this method implemented just in case. Change-Id: I176a2aa782da316d1fe11ce15a89195595d80618 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * | | macOS: Implement QWindow::requestUpdate() in terms of setNeedsDisplayTor Arne Vestbø2017-09-012-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is preferable to the timer-based default implementation of QPlatformWindow, as it gives AppKit more control of when to schedule the update, and makes sure the update is scheduled along with other views in the normal display-cycle, reducing the number of push flushes we do. QtWidgets still need to plumb the update() method to updateRequest for that to have any real effect though. In the future we may consider scheduling the update via a display link, if the window surface is set up for GL, for example. Ideally we'd also have a platform hook for the repaint() method, so that we could funnel it through display and get synchronous painting with AppKit still taking care of drawing and compositing child views. Change-Id: I136a9afa087b922aad69086548c2aa190ce75b6b Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * | | macOS: Determine opaqueness and backgroundColor of NSWindow declarativelyTor Arne Vestbø2017-08-303-9/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of imperatively trying to keep the logic consistent in many different call sites. Task-number: QTBUG-61909 Change-Id: I8d647690c47656f34673555a8a8aa3ec6ffc73d1 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * | | macOS: Use [NSObject superclass] instead of class_getSuperclassTor Arne Vestbø2017-08-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The former takes into account dynamically generated key-value-observing (KVO) subclasses, of the form NSKVONotifying_*, which would result in class_getSuperclass returning QNSWindow and recursing back to the original call site of qt_objcDynamicSuper. Change-Id: I4b8b1aa64d2834d9d1baa395c877319e99084bc8 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | macOS: Move NSOpenGLPixelFormat creation back into QCocoaGLContextTor Arne Vestbø2017-08-252-5/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code was factored out in 0058f00b6 to be shared with Wayland, but the Wayland platform plugin now lives in its own repository (as of 75a66c3d), and doesn't support running on macOS anymore. Change-Id: Ied54f5f3e0a3e6fdaaedfcd456a140b46706f33c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * | | macOS: Add workaround for Qt not accepting resize-events before showTor Arne Vestbø2017-08-251-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QtWidgets in particular expects a show event before any resize or expose events. QWindow::setVisible creates the platform window before sending the show event, so we block sending any resize events during platform window creation of QCocoaWindow, which means we miss out on the resize event that indicates that the window is maximized. We should probably teach QWindow::setVisible to send the show event before creating the window, but until then we work around it by sending an explicit resize event in QCocoaWindow::setVisible. Task-number: QTBUG-62774 Change-Id: I6d512c9775986bcbcbf5c02a9e49984015fa9782 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | | | Revert "Revert "macOS: Deduplicate QNSWindow/QNSPanel code""Tor Arne Vestbø2017-09-265-213/+232
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 3ad8295451aa30a212eb6efe6330b5bfccd9f599. The fix for the issue was landed in 5.10 as 1be1ed014b1deacb51fef4, and will be merged into dev as a followup. Change-Id: Id7773d1cc2caecbe358aadd9ade427a9c1eed9ef Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | | | Revert "macOS: Deduplicate QNSWindow/QNSPanel code"Morten Johan Sørvig2017-09-215-232/+213
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All Qt applications crash on startup on macOS 10.13 with an infinite recursion in -[QNSWindow sendEvent:]. This reverts commit a980250a666bc87e5db006b8668c6af9340915f2. Change-Id: I155a89e61b1695f18627bf158389eb130b98751a Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | | Replace Q_NULLPTR with nullptr where possibleKevin Funk2017-09-1969-203/+203
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remaining uses of Q_NULLPTR are in: src/corelib/global/qcompilerdetection.h (definition and documentation of Q_NULLPTR) tests/manual/qcursor/qcursorhighdpi/main.cpp (a test executable compilable both under Qt4 and Qt5) Change-Id: If6b074d91486e9b784138f4514f5c6d072acda9a Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | | Replace Q_DECL_OVERRIDE with override where possibleKevin Funk2017-09-1980-554/+554
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remaining uses of Q_DECL_OVERRIDE are in: src/corelib/global/qcompilerdetection.h src/corelib/global/qglobal.cpp doc/global/qt-cpp-defines.qdocconf (definition and documentation of Q_DECL_OVERRIDE) tests/manual/qcursor/qcursorhighdpi/main.cpp (a test executable compilable both under Qt4 and Qt5) Change-Id: Ib9b05d829add69e98a86238274b6a1fcb19b49ba Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | | eglfs_kms: Remove unused virtuals and move flip callbackLaszlo Agocs2017-09-197-46/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...to the screen, where it belongs. Task-number: QTBUG-63088 Change-Id: I4bfc4c259f91431d12851f888a7d044e43856d63 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | eglfs: Forward nativeRes.ForInteg.() to backendsLaszlo Agocs2017-09-195-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Expose the fd from eglfs_kms. More exposed bits will follow later on. [ChangeLog][Platform Specific Changes][eglfs] The DRM+GBM backend now exposes the DRM/GBM device handle under the key "dri_fd", queriable via nativeResourceForIntegration(). Task-number: QTBUG-63088 Change-Id: Iac95393c115bb83d1f65cb4a7acc0ea3e7d3e68f Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | eglfs: Allow forwarding platformFunction() to backendsLaszlo Agocs2017-09-193-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-63088 Change-Id: I52cc56324c755cc4f7c9388470bfd27793b4abeb Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | eglfs_kms: Move out window subclass from integrationLaszlo Agocs2017-09-194-56/+153
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clean up the includes too while we are at it. Task-number: QTBUG-63058 Change-Id: I36eaaa5fc18219ca271b6bea8425ac8cc7cb8b6d Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | kms: Rename the plane index workaround vars appropriatelyLaszlo Agocs2017-09-193-21/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...and purge support from eglfs_kms. That path never worked, the environment variable was meant for the NVIDIA backend only. Task-number: QTBUG-63058 Change-Id: I8cf47168d5878e18eb22c839d56e2d48cbb4fdad Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | iOS: disable Apple Pencil support if configure -no-feature-tableteventShawn Rutledge2017-09-152-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-59042 Change-Id: Ia60cb01206316ae85fffac44c453803f39d3a611 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | | | Fix compilation with clang 4 on LinuxLars Knoll2017-09-151-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: I7fdafeced7cdef7a97b4e004e9302cb2f1e6f258 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | | Add Apple Pencil support on iOSShawn Rutledge2017-09-143-22/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Apple Pencil now generates QTabletEvents, with tilt, rotation and pressure. Predicted touches are not supported, because we don't yet have a suitable QEvent or flag for that. [ChangeLog][iOS] The Apple Pencil now generates QTabletEvents, with the complete feature set (tilt, rotation, pressure). Task-number: QTBUG-59042 Change-Id: Id58e22ac4cf8dfa80519d516c388309966f773f9 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | | | eglfs_kms: Add headless mode for DRM render nodesLaszlo Agocs2017-09-056-10/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Attempting to switch /dev/dri/cardX to /dev/dri/renderDY is futile on its own now since many output-related drm operations fail and we eventually crash. Add a new headless mode that skips the real screen stuff and registers a fairly dummy, headless screen, does not bother with the mouse cursor, and disallows rendering to the screen via a QWindow (while keeping the actual rendering still fully functional). Such applications will not need any special privileges and will run even if there is a DRM master (X11, Wayland compositor) active. For example the configuration can look like this: { "device": "/dev/dri/renderD128", "headless": "1024x768" } After this applications have two choices to perform offscreen rendering: 1. Use an ordinary window (and its default framebuffer, meaning the gbm_surface), e.g. a QOpenGLWindow subclass MyOpenGLWindow w; w.show(); // will not actually show on screen w.grabFramebuffer().save("output.png"); Note that there is no vsync-based throttling. Also note that windows are still sized to match the screen size, hence the need for specifying a size in the headless property. 2. Or the typical offscreen approach with an extra FBO QOffscreenSurface s; s.setFormat(ctx.format()); s.create(); ctx.makeCurrent(&s0; QOpenGLFramebufferObject fbo(1024, 768); fbo.bind(); ctx.functions()->glClearColor(1, 0, 0, 1); ctx.functions()->glClear(GL_COLOR_BUFFER_BIT); fbo.toImage().save("output.png"); ctx.doneCurrent(); Task-number: QTBUG-62262 Change-Id: Ic1dbfa2b27b223bd5ef8ba36b665f0f61abf4f06 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | eglfs_kms: Output cloning supportLaszlo Agocs2017-09-054-24/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | { "device": "/dev/dri/card0", "outputs": [ { "name": "HDMI1", "mode": "1920x1080" }, { "name": "DP1", "mode": "1920x1080", "clones": "HDMI1" } ] } Here, assuming the QScreen for DP1 is unused and the resolution is the same, DP1 will simply mirror whatever is on HDMI1. The plane-based mouse cursor is not currently supported. Same goes for any form of scaling since this simply scans out the same framebuffer on all target CRTCs. Task-number: QTBUG-62262 Change-Id: I391be204264284a1bff752ebc2a1dbe5c8592013 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | eglfs_kms: Add support for formats other than XRGB8888Laszlo Agocs2017-09-052-10/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Switch to drmModeAddFB2 and add mappings for RGB565 and ARGB8888, and some BGR variants. The default is XRGB8888, like before. Others can be requested in the config file with "format": "rgb565" or "argb8888" etc. on a per-output basis. If the primary plane does not support the format, modesetting and flipping will fail. Task-number: QTBUG-62262 Change-Id: I8537cbeed7f046c46aa63fcea6d6946c0e0038a7 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | eglfs_kms: Skip modesetting when current is good enoughLaszlo Agocs2017-09-051-25/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...unless explicitly requested via QT_QPA_EGLFS_ALWAYS_SET_MODE. This mirrors the behavior of the EGLDevice backend. Synchronize the "swap" behavior in other aspects too: do not retry a failing modeset until infinity, and make the (currently limited but soon enhanced) plane setup independent of the modesetting. Task-number: QTBUG-62262 Change-Id: If43c4edf09c526a3d0f566994a3d632c217d2c31 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | eglfs_kms: Lift the one window per screen ever limitationLaszlo Agocs2017-09-053-8/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is still one fullscreen window per screen at a time, but there is no reason we should fail in the backend when the screen already has the gbm_surface created. If there is really another active GL window for this screen, then the base eglfs window implementation will panic anyway. This should help certain cases, where windows belonging to screen B get created for screen A and then moved (recreated) for screen B. Task-number: QTBUG-62262 Change-Id: Ia029f028d32a35e8e023f3132097ba9a919b8fe8 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | eglfs_kms: remove unused codeLaszlo Agocs2017-09-054-26/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-62262 Change-Id: If21cbfcda2decf7bd70cf56695ee1d676cbaa55f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | eglfs_kms: Remove useless log entry for each QOffscreenSurfaceLaszlo Agocs2017-09-051-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-62262 Change-Id: Id5225737f619d3f0d980e8b67de92f30dc62e8a6 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | | Add QPlatformSurface::screen() constJesus Fernandez2017-09-044-12/+21
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Classes inheriting QPlatformSurface need to return the QPlatformScreen to allow the platform integration plugin to know information about the used screen by the surface. QPlatformSurface and QPlatformWindow had the same function defined, but it was not possible to call it without casting the QPlatformSurface pointer. Change-Id: I1f93fe7c13ebbc51769677038edeca4de5db0024 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-08-3119-159/+79
|\ \ \ | |/ / |/| / | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/examples.pro qmake/library/qmakebuiltins.cpp src/corelib/global/qglobal.cpp Re-apply b525ec2 to qrandom.cpp(code movement in 030782e) src/corelib/global/qnamespace.qdoc src/corelib/global/qrandom.cpp src/gui/kernel/qwindow.cpp Re-apply a3d59c7 to QWindowPrivate::setVisible() (code movement in d7a9e08) src/network/ssl/qsslkey_openssl.cpp src/plugins/platforms/android/androidjniinput.cpp src/plugins/platforms/xcb/qxcbconnection.cpp src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/widgets/widgets/qmenu.cpp tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp Change-Id: If7ab427804408877a93cbe02079fca58e568bfd3