summaryrefslogtreecommitdiffstats
path: root/src/gui
Commit message (Collapse)AuthorAgeFilesLines
* Pass m_drag_icon_window to getNativeMousePos instead of Event QObjectÀlex Fiestas2017-09-041-4/+4
| | | | | | | | | | The QWindow passed to eventFilter is static so it might be in a different screen when we call getNativeMousePos, resulting in negative position and all sorts of glitches. Change-Id: Ibc848c6d85d8b6932ee379aa77851094212a0db2 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Avoid assert on large clips in qt_alphamapblit_genericAllan Sandfeld Jensen2017-08-291-2/+2
| | | | | | | | | It is (end - start) that represent the number of pixels being worked on and needs to be smaller than the buffer size. Change-Id: I75a22bc2656ac1c7d231278c3a1931758090f8ce Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Fix: WebP missing from QMovie::supportedFormats()Eirik Aavitsland2017-08-291-1/+1
| | | | | | | | | | Use QImageReader::supportsOption() instead of ::supportsAnimation(), since the former checks what the handler supports in general, not just the particular device. Task-number: QTBUG-61642 Change-Id: I57db24425b4fd8821446659936e6a8ca55008921 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* QWidget: Call appropriate QWindow method from setGeometry_sys()Gabriel de Dietrich2017-08-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | When calling resize() from showEvent(), we'd set the full geometry on the widget's QWindow. This resulted in the top-level window being moved to the top-left corner, even though no other call to move() or setGeometry() had happened before. The solution consists on calling the proper QWindow methods depending on whether setGeometry_sys() is called for a move, a resize or both. Furthermore, this needs QWindow::resize() to set its position policy to frame-exclusive. The documentation states that is already the case and we're setting the full geometry on the platform window, so we need to convey that bit of information. This also solves the age-old conundrum: "### why do we have isMove as a parameter?" Change-Id: I2e00fd632929ade14b35ae5e6495ed1ab176d32f Task-number: QTBUG-56277 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix huge painting artefact of certain dashed linesEirik Aavitsland2017-08-181-1/+1
| | | | | | | | | | | | | | | The artefacts appeared for square-capped dashed pens when the end of the line fell a tiny fraction into the start of a new dash. At that point in the dashing algorithm, accumulated precision errors in the 'length' variable could make it slightly differ from the actual length between the start and end points of the line fragment. Although both values would be "almost zero", the rasterizeLine() function's square capping would make the error very visible; see the bug report. Fix by calculating the precise length of the last line fragment. Task-number: QTBUG-56969 Change-Id: I7b69c0d465649be61fb87ac7b8348f0c299486ee Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QPicture: check that pictureFormat doesn't return dangling pointersGiuseppe D'Angelo2017-08-161-1/+6
| | | | | | | | | | | The function returns a const char * out of a QByteArray. We must be sure that the QByteArray outlives the function, otherwise the pointer returned would be dangling. Add an assertion for that. Found by clazy. Change-Id: I3416af4eb5ec79ddb3e4baf3bdcfe046b44d4225 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Block input to a window shown while an application modal dialog is visibleAndy Shaw2017-08-161-0/+2
| | | | | | | | | | | Although the window is refused input for the most part from the system, it does not act like that it is blocked by the application modal dialog. This ensures that it is the case and prevents things like being able to double click on the title bar to maximize the window on Windows. Task-number: QTBUG-49102 Change-Id: If1582819b90cb2ec9d891f664da24f13bfec7103 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Fix reset with qoffscreensurface destruction with multimonitor supportMäättä Antti2017-08-081-1/+1
| | | | | | | | | | | | | | | | | The qoffscreensurface::setScreen crashes in create if application is closing. This happens in multimonitor setup when one of the screens is already destroyed and qoffscreensurface handles the screenDestroyed signal. In this case the QGuiApplication::primaryScreen returns non-null surface and selects the codepath that recreates the surface. The create function calls the qGuiApp->thread function, which crashes since the application instance has already been set to nullptr. Prevent this in qoffscreensurface by checking the application instance in the setScreen function. Task-number: QTBUG-62222 Change-Id: Ibb11a270c23a39e66009b45ab83dd7d47d5ccb1f Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Doc: remove linking to internal methodNico Vertriest2017-08-061-1/+1
| | | | | | | qimage.cpp:2127: warning: Can't link to 'isDetached()' Change-Id: Ib8f056441bf08e315ed97caf55c510f50ebaf4ed Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Fix iOS shared buildsJan Murawski2017-08-041-0/+1
| | | | | | | | | Building iOS shared failed with link errors to the CoreGraphics framework when building without harfbuzz-ng. This patch adds the missing dependency. Change-Id: If464417039172c2854e455563153057f0cea2a22 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Fix build error with macOS 10.13 SDKJake Petroules2017-08-042-18/+2
| | | | | | | | | | | Several of these variables/macros are no longer defined. We didn't validate the preconditions on iOS, tvOS, or watchOS, so no need to bother validating them on macOS either. Nor did we check the OSStatus result on any platform anyways. Task-number: QTBUG-62266 Change-Id: Id19ebead5d3a8a08a0a56d798f0173d0d893fc91 Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
* Fix RGBA64 interpolation when x remainder equals zeroAllan Sandfeld Jensen2017-08-021-9/+12
| | | | | | | | | | The 16-bit multiplication can not handle the case where one of the numbers is 65536, so skip it in that case as we do when the y remainder triggers the same issue. Task-number: QTBUG-62165 Change-Id: Iea2ebe557949797d9aa77b8d7cdac9247eea7b84 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* QWindowSystemInterfacePrivate::toNativeTouchPoints(): Add missing scalingFriedemann Kleint2017-08-021-2/+2
| | | | | | | | Scale velocity and raw positions as does QWindowSystemInterfacePrivate::fromNativeTouchPoints(). Change-Id: I4c9e03e4c2f4ca807319b1a7d1f4a9e56a25b06c Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* ANGLE: Fix build for newer MinGW versionsOliver Wolff2017-08-021-0/+10
| | | | | | | | | | | Availability of D3D11_QUERY_DATA_TIMESTAMP_DISJOINT depends on the used MinGW version so that the check for MINGW is not sufficient. The newly added configure test can be used for every toolset. Task-number: QTBUG-57916 Change-Id: Ia9cb48f3e673841101a93cbc8ea23aff9547f639 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* configure: Add a feature to write tests in the .json fileThiago Macieira2017-08-021-44/+440
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | We're adding a lot of unnecessary files that end up later as cargo-cult, for at most a handful of lines. So instead move the testcases directly into the .json file. The following sources were not inlined, because multiple tests share them, and the inlining infra does not support that (yet): - avx512 - openssl - gnu-libiconv/sun-libiconv (there is also a command line option to select the exact variant, which makes it hard/impossible to properly coalesce the library sources) The following sources were not inlined because of "complications": - verifyspec contains a lengthy function in the project file - stl contains lots of code in the source file - xlocalescanprint includes a private header from the source tree via a relative path, which we can't do, as the test's physical location is variable. - corewlan uses objective c++, which the inline system doesn't support reduce_relocs and reduce_exports now create libraries with main(), which is weird enough, but doesn't hurt. Done-with: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Change-Id: Ic3a088f9f08a4fd7ae91fffd14ce8a262021cca0 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Fix precisions check for using fast transformsAllan Sandfeld Jensen2017-08-021-2/+2
| | | | | | | | The coordinates need to be representable in signed 16-bit not unsigned. Task-number: QTBUG-62251 Change-Id: I1d4aaa2fb90b8f428380277d5b4e416a4672ee6a Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Fix QStandardItem::setChild crash when passing a null pointerJesus Fernandez2017-07-271-2/+13
| | | | | | | | | | | | Passing a null pointer as a parameter to the setChild function no longer crashes when calling the QStandardItemModelPrivate::itemChanged signal. The child is removed from the model. The patch also fixes the behavior of deleting a item. A dataChanged signal is emitted. Change-Id: I027e8b0d84fe33c5fca056df870f0e60a020824b Reviewed-by: David Faure <david.faure@kdab.com>
* QFontDatabase: Output family in warning about missing Open Type supportFriedemann Kleint2017-07-271-2/+4
| | | | | | | | | | OpenType support missing for script 11 becomes: OpenType support missing for "SimSun", script 11 Change-Id: I562e20d630c9cdd888f75fd99b987de5152cd77e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add QDebugStateSaver to QVectorPath operator<<Jesus Fernandez2017-07-251-0/+1
| | | | | | | | | &operator<<(QDebug &, const QVectorPath &) was modifying the QDebug state without restoring it after finishing. Change-Id: I28c377bc99bfeb5a7bc67ca9affa8123f04583df Coverity-Id: 11375 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QPMCache::remove(): Do not dereference erased iteratorFriedemann Kleint2017-07-191-1/+2
| | | | | | | | Fixes a crash in tst_QGL::textureCleanup() (developer build). Amends 467b15a20c3d6eb611ea5f6ccffd5fc0df81b0c4. Change-Id: I7026b3c2a27c02a80b995fde67a832dc2d19031d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix QHighDpi::fromNativeLocalExposedRegion rounding errorsTor Arne Vestbø2017-07-191-4/+4
| | | | | | | | | | | | | | | | | | | | Calling bottom/right/bottomRight on a QRect is discouraged, as it does not give the true bottom-right corner of the rectangle, instead giving a point one unit to the left and top of the true bottom right. Dividing this point by a scale factor of e.g. 2, and then using qCeil on the bottom right x and y coordinates would result in a pointRegion that was 1x1 * scaleFactor larger than it should, manifesting as rendering issues at later stages. We can get away from the whole problem by initially converting the QRect to a QRectF, and basing the pointRegion's rect on the scaled size instead of bottom-right coordinates. Change-Id: I4d4895660655cfa8749c93c7d2573ae79cd7898b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Fix buffer overflow in text blendingAllan Sandfeld Jensen2017-07-111-4/+4
| | | | | | | | | Clip buffers being converted to those being worked on so we don't write outside the lines. Task-number: QTBUG-61863 Change-Id: Icc7c6c0946fa522b5afeca0663fc2b45151b1897 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix modernize-use-bool-literals issuesKevin Funk2017-07-081-2/+2
| | | | | | | | | | | Reported by clang-tidy. Skipped fixes in implementation files, only changed headers. Change-Id: I5cfd266b3d4046f90baebc0c538b1b6ab03a02d2 Reviewed-by: Volker Krause <volker.krause@kdab.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix polygon stroking with cosmetic penAllan Sandfeld Jensen2017-07-051-13/+43
| | | | | | | | | | | | | | Fix a number of issues that caused polygons to not always be drawn fully connected. Ensures the original lastPixel is set when drawing closed polygons, ensure we don't round away from the original starting point, and add handling of edges that need to be rounded half a pixel sideways to line up with endpoints. Task-number: QTBUG-27053 Change-Id: Ib51ee5623a629996af51a0967096383f04e91e2f Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Fix capitalization of x11-xcb pkg-config module nameDmitry Shachnev2017-07-031-1/+1
| | | | | | | | | | | $ pkg-config --exists X11-xcb && echo True $ pkg-config --exists x11-xcb && echo True True See https://cgit.freedesktop.org/xorg/lib/libX11/tree/x11-xcb.pc.in. Change-Id: I1485f124e2926bb1c6a2b5eb83c4963c095d0f12 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Fix detection of AT-SPIBernhard Rosenkränzer2017-07-031-1/+1
| | | | | | | | | | | | | | | | | | Building qtbase 5.9.1 on Linux always results in a build with accessibility support disabled. The problem is that the config option for accessibility-atspi-bridge checks for config.atspi, which isn't defined anywhere - it should check for libs.atspi (which is set if pkg-config finds atspi-2) instead. [ChangeLog][QtGui][Platform Specific Changes][Linux/XCB] Fixed detection of AT-SPI, allowing accessibility support to be built again. Task-number: QTBUG-61731 Change-Id: If3bd5dfccda40158c566f8507e34b6877b59b6fb Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io> Reviewed-by: Bernhard Rosenkränzer <bero@lindev.ch>
* Fix BMP ImageFormat for semi-transparent filesAllan Sandfeld Jensen2017-07-032-41/+35
| | | | | | | | | Reads the v4 and v5 info-header together with the rest of the info- headers, and use that to report the correct image format before decoding. Change-Id: I69e2bcc54367b7f14820815ae2ae1fa2d8d5dc8c Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* xcb: Replace XCB_USE_XINPUT define by QT_CONFIG macroAlexander Volkov2017-06-291-1/+1
| | | | | | | | .. and remove it from qxcbconnection_xi2.cpp as this file is build _only_ when xinput2 is available. Change-Id: I66d6a299c120fc034f8519cd188e1b845d5bd1bc Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* Convert features.whatsthis to QT_[REQUIRE_]CONFIGStephan Binner2017-06-296-7/+13
| | | | | | | Move feature definition to gui/configure.json Change-Id: I00b35c0e259d0a695d84a9bf6803eba74d41465a Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Fix GCC 8 warnings about ignored const on cast result typesMarc Mutz2017-06-281-1/+1
| | | | | | | | | | qdrawhelper.cpp:1365:25: error: type qualifiers ignored on cast result type [-Werror=ignored-qualifiers] for (; i < count && (const uintptr_t)buffer & 0xF; ++i) { ^~~~~~~~~~~~~~~~~~~~~~~ etc... Change-Id: I702f9aada24ad49ebc7ede0a04e5afc1b0164e30 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Convert features.tabletevent to QT_CONFIGStephan Binner2017-06-286-17/+17
| | | | | Change-Id: Ibd7ed7f269a64afddadee70979b20f1c58398378 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Convert features.wheelevent to QT_CONFIGStephan Binner2017-06-285-12/+12
| | | | | Change-Id: I46083a9115c199d1ebe024ed5f64b160a27462f1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* ATSPI: correct configure warning message when ATSPI is missingThiago Macieira2017-06-251-1/+1
| | | | | | | | | | | | | This threw me for a loop: Qt D-Bus ............................... yes Qt D-Bus directly linked to libdbus .... yes [...] Note: Disabling Linux Accessibility Bridge: D-Bus is missing. Also, this is not the Linux bridge, since I was running on FreeBSD. Change-Id: I1d5a585d4af842f9a66ffffd14c99ab2a8d648de Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* winrt: doc: Update platform limitations for UWPMaurice Kalinowski2017-06-141-0/+11
| | | | | | | | | UWP only allows clipboard access when the app is active and has focus. Task-number: QTBUG-60900 Change-Id: Ia69642740d894106875cef77adf48e934bae9c87 Reviewed-by: Martin Smith <martin.smith@qt.io> Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
* Remove message of integrityfb from config summaryKimmo Ollila2017-06-131-1/+0
| | | | | | | | | This cleans the config summary output Change-Id: I4e78f00c722e646a730906d462f7632d6012a6d8 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Tero Alamaki <tero.alamaki@qt.io>
* Use upstream at-spi 2Frederik Gladhorn2017-06-091-1/+7
| | | | | | | | | | Move at-spi dbus xml definitions into platformsupport, these files simply describe the DBus protocol and should not be in 3rdparty. The header files can just as well be picked up by pkg-config. Change-Id: I326d9b3cb69223bf2c8646099f211d9a9f3fa0af Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QKeySequence: fix size mismatchMarc Mutz2017-06-081-1/+1
| | | | | | | | | 'accel' is 'str.toLower()' and as such may have a different size, so don't use str.size() to index into 'accel'. Change-Id: I6a140ded45ecedd811b9618e1facb63d522eb235 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Translate the adjusted deviceWindowRect with an adjusted offsetAllan Sandfeld Jensen2017-06-071-1/+7
| | | | | | | | | Otherwise the mismatched device pixel ratio will lead to incorrectly offset blitting. Task-number: QTBUG-59017 Change-Id: Iccbe9cd9704bccbceda4c8dafe87435b68b5cf3e Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Fix QImageReader::supportedSubTypes()Eirik Aavitsland2017-06-071-1/+1
| | | | | | | | | Because of inverted test logic, this function would always return an empty list. Task-number: QTBUG-61048 Change-Id: If1529f2c567069ab4b672f309268b4edaf84c42f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix semi-opaque linear gradient on ARGB32Allan Sandfeld Jensen2017-06-011-1/+1
| | | | | | | | | | | The qt_gradient_argb32 routine optimizes linear gradients with the solid blend routines that is ARGB32PM only. If the gradient is not solid, it will not get unpremultipled on write like it should for ARGB32. Covered by lancelot, but the change is less than 5%. Change-Id: Id99f2fa125cc091f3b5b29ec2d06618785d628fa Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.9.0' into 5.9" into ↵Liang Qi2017-05-311-1/+0
|\ | | | | | | refs/staging/5.9
| * Merge remote-tracking branch 'origin/5.9.0' into 5.9Liang Qi2017-05-311-1/+0
| |\ | | | | | | | | | Change-Id: I2d7a3f3a80e6287e135e55b650f74f9a540332bc
| | * Revert "Enable "combined-angle-lib" for ANGLE builds"v5.9.0-rc1Oliver Wolff2017-05-191-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Combining libEGL and libGLESv2 into QtANGLE cannot be the default any longer, as the change was binary incompatible. We just had to return to previous behavior temporarily to be able to fix qtlocation. This reverts commit 97ab65076e30d8cd0cbe6bdbdb51d1dc2c0ff7e7. Task-number: QTBUG-60795 Change-Id: I3095cb5f9da30e2d873d9a186cfbc5aee3fb10b2 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | | Fix qpa/kms test with Vibrante 4.1.6.0 on INTEGRITY for Drive CXTero Alamäki2017-05-311-1/+1
|/ / | | | | | | | | Change-Id: I44ae001dc9f96ea8819a56a87be9322326dbbb4b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Add USB HID device feature to INTEGRITYKimmo Ollila2017-05-301-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | This change adds USB mouse handling support for INTEGRITY Change-Id: I8a2a51c8c3578898e90dd5bbb01f6aed6c64e2a4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Timo Aarnipuro <timo.aarnipuro@qt.io> Reviewed-by: Nikola Velinov <nvelinov@ghs.com> Reviewed-by: Rolland Dudemaine <rolland@ghs.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Tero Alamaki <tero.alamaki@qt.io>
* | Convert features.movie to QT_[REQUIRE_]CONFIGStephan Binner2017-05-293-11/+6
| | | | | | | | | | Change-Id: I838c7305d4649f953c5bb972f1aa51dbb078afe2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Add INTEGRITY framebuffer test to configureTero Alamäki2017-05-291-1/+6
| | | | | | | | | | Change-Id: I606da783ef9959448a89a7a616ab197820194977 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Configure eglfs_kms_egldevice for INTEGRITY ARMv8 Drive CXTero Alamäki2017-05-291-1/+2
| | | | | | | | | | | | Change-Id: If41135cdf8287b90690321bef3ad839db6778782 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | doc: Add warning about QTextLayout::beginLayout() and clearLayout()Eskil Abrahamsen Blomfeldt2017-05-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If you keep around QTextLines referring to the previous contents of the layout, you can experience crashes when using these after the layout has been cleared. Since QTextLine is a value type, this is not very obvious in the API, so we should at least give a warning in the docs. Task-number: QTBUG-60804 Change-Id: I81b2b640eec5f62b0af1e878aadd9fa23654ec18 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge "Merge remote-tracking branch 'origin/5.9.0' into 5.9" into ↵Liang Qi2017-05-192-37/+42
|\ \ | | | | | | | | | refs/staging/5.9