Commit Graph

27938 Commits

Author SHA1 Message Date
Oswald Buddenhagen
7931395d5b remove pointless conversion to QString in isTrue()
Change-Id: I7766672018dd4acf9b9fb89acfe664671de4bc3d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-05-19 17:32:47 +00:00
Oswald Buddenhagen
a7a3cd643a remove pointless conversions to QString when converting to int
this doesn't change a lot, but is cleaner.

Change-Id: Ia89c399d6df7cc6264954cf309d2c971a5592d6b
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-05-19 17:32:41 +00:00
Oswald Buddenhagen
e8bdca74b5 optimize ProString::toInt()/toShort()
QStringRef has respective overloads now.

Change-Id: I9b94c53092ef3fdd62a68f5d3c5bacb98a14d8ec
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-05-19 17:32:27 +00:00
Nico Vertriest
e6cc1d788d Doc: corrected issues with non-existing image files
Changed gtk- into fusion- in image file names

Change-Id: I8d7beeda1f705aa4bb8ce53fd7189c2fca56fa62
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
2016-05-18 07:33:10 +00:00
Joerg Bornemann
082ee835b0 QLocalSocket/Win: Use QIODevice's internal write buffer
Remove the extra write buffer from QLocalSocketPrivate and use
QIODevice's new internal write buffer.

Change-Id: I4297774ee89da2df59782adae8b804296e7f3301
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-05-17 11:01:39 +00:00
Joerg Bornemann
1675d9a1b2 QLocalSocket/Win: use QRingBuffer::append
Use QRingBuffer::append instead of an explicit reserve + memcpy.

Change-Id: I237d1e43a377e156c148e89e410e15e400e1e426
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-05-17 11:01:35 +00:00
Marc Mutz
3c19b8b162 QOpenGL: use new QJsonObject::value(QLatin1String)
Allows to get rid of some QStringLiterals, reducing QtGui
text size by ~2Kib.

Change-Id: Ic033fad5673aadc85930842dfccc24299df154f7
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2016-05-16 20:59:31 +00:00
Laszlo Agocs
c5c7997fc2 eglfs-viv: Fix config test
fbGetDisplay() expects a context pointer, but the config test was
calling this function without any arguments, causing the test to
fail even when the Vivante EGLFS device integration is actually
supported.

This got broken in 5.7 by the INTEGRITY changes in
9b35b0e8dc.

Task-number: QTBUG-53282
Change-Id: I233d93618b1c8a31d12b31139d3bfbd3d6429839
Done-with: Carlos Rafael Giani <dv@pseudoterminal.org>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-05-15 17:46:37 +00:00
Shawn Rutledge
28fab27503 add AA_CompressHighFrequencyEvents to control compression on xcb
7edd10e6c added this compression feature, but some applications may
need to disable it.

[ChangeLog][X11] It's now possible to unset AA_CompressHighFrequencyEvents
to disable the new X event compression feature that was added in 5.6.0.
This is a replacement for the WA_NoX11EventCompression flag in Qt 4.

Task-number: QTBUG-44964
Change-Id: I37a9c8a4831f1c02eda0f03b54125f3255d25500
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2016-05-15 08:05:29 +00:00
Thiago Macieira
dc40abe925 Move out the code to extract the backtrace to another function
This will make it easier to use create backtraces in other contexts.

Change-Id: I56b838ab04d9810108fcdb7f8c2fd91255864850
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-05-13 21:42:45 +00:00
André Klitzing
aebb54b24b Add ephemeralServerKey to isNull() and operator==
Change-Id: Iacd0f55886847630b84a8037d8d26504c558c90e
Reviewed-by: Sebastian Lösch <Sebastian.Loesch@governikus.com>
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
2016-05-13 20:27:36 +00:00
Anton Kudryavtsev
432d3b6962 QDateTimeParser: use QStringRef more
Avoid unnecessary allocations.

Change-Id: I217ba3fe20293f5cdeeaac2dfae15f837cda51e0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-05-13 05:25:55 +00:00
Marc Mutz
7248e97669 QtConcurrent/QtOpenGL(Extensions)/QtPrintSupport/QtTestLib/QtXml: add QT_NO_FOREACH
Mark these libraries as what they are: Q_FOREACH-free,
using QT_NO_FOREACH.

Change-Id: I2a567d9fe67e15e9b6f0784525810b553dc50e1f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-12 21:42:10 +00:00
Marc Mutz
656e6ae9ea QtNetwork: port the last remaining Q_FOREACH loop and add QT_NO_FOREACH
Port the last remaining Q_FOREACH user in QtNetwork to
C++11 range-for and mark the library as Q_FOREACH-free,
using QT_NO_FOREACH.

Change-Id: I8977f151e3575422fc1154677e035274c018d66f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-12 21:42:05 +00:00
Alex Trotsenko
ac2ccb1559 QHttpSocketEngine: set error on unsupported operations
Force overloads which relate to UDP or listening to fail with a
'UnsupportedSocketOperationError' error code.

Change-Id: I057c47864ee1d9c95b413edfda977dd0607844cb
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-05-12 17:21:53 +00:00
Giuseppe D'Angelo
4dc29bc9de QSharedPointer: move QDebug stream operators into qdebug.h
In order to avoid pulling in QDebug when including QSharedPointer.

Change-Id: I14b86d1f100ed44a68258c91bbda394b655bac83
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-05-12 16:41:32 +00:00
Marc Mutz
99ca471014 winmain: port the last remaining Q_FOREACH loop and add QT_NO_FOREACH
Port the last remaining Q_FOREACH (over a QVarLengthArray,
no less) in winmain to C++11 range-for and mark the library
as Q_FOREACH-free, using QT_NO_FOREACH.

Change-Id: Ic561080f7dd61d1d853ceb9e211c9b8a23bf05a5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-05-12 11:21:01 +00:00
Eskil Abrahamsen Blomfeldt
d70205cd2b Remove dead code from tst_QFont::exactMatch()
All this code was skipped on all platforms, so keeping it is just
confusing.

Change-Id: I405d2e791b22a2494fe5ccac6e3bf08905dc4e5a
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2016-05-12 10:13:58 +00:00
Eskil Abrahamsen Blomfeldt
78eeb6b066 QFont::exactMatch() should return false for aliases
This is a partial revert of 992f233c in Qt 4 repo. The rest of the
change cannot be reverted, since it added public API, but that
API might be useful anyway.

The patch was wrong, basically. QFont::exactMatch() should not claim
that you can get an exact match for a typeface alias. It also introduced
some weird inconsistencies: For instance, if the first font the alias
resolved to in FontConfig did not exist, then exactMatch() would return
false, even if it then resolved to the next one which existed. This
caused a test failure on OpenSuse, where the preferred font for "sans"
is Arial, which doesn't exist, so Roboto will be used instead.

[ChangeLog][QtGui][Important Behavior Changes] QFont::exactMatch() now
returns false when the provided typeface is an alias.

Task-number: QTBUG-46054
Change-Id: I7532d2879b492544620aa0d1d87dd493a4923af9
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2016-05-12 10:13:42 +00:00
Thiago Macieira
9ef59b586d QMutex: make FUTEX_PRIVATE_FLAG a mandatory feature
The flag was introduced in kernel 2.6.22, but we're already depending on
features added on 2.6.23 in qcore_unix_p.h (pipe2, dup3, O_CLOEXEC) and
2.6.27 in qnet_unix_p.h (accept4 and SOCK_CLOEXEC).

Change-Id: Id5480807d25e49e78b79ffff144a093c9e30cd96
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-05-11 22:22:50 +00:00
Marc Mutz
e2e0dfee7c QtCore/QtDBus/QtSql: port the last remaining Q_FOREACH loop and add QT_NO_FOREACH
Port the last remaining Q_FOREACH user in QtCore to
C++11 range-for and mark QtCore, QtSql and QtDBus as
Q_FOREACH-free, using QT_NO_FOREACH.

Change-Id: Ia6f99139cb1ca4a8bbe9e445421592242e048b0a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-05-11 16:55:37 +00:00
Marc Mutz
f0d7080e9e qmake/tools: port the last remaining Q_FOREACH loops and add QT_NO_FOREACH
Port the last four remaining Q_FOREACH users in qmake
and uic to C++11 range-for and mark all qtbase tools
(incl. qmake) as Q_FOREACH-free, using QT_NO_FOREACH.

Change-Id: Ief4e5877269e7a853e4cf05e58861a448e822d3d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-11 16:55:32 +00:00
Marc Mutz
81793b8b58 Add QT_NO_FOREACH to disable foreach and Q_FOREACH
It has been known for a long time that Q_FOREACH produces
inferior code to other looping constructs, and the use of it
in Qt library code was informally frowned upon since forever
(pun intended).

Yet, to this day, several thousand foreach/Q_FOREACH loops
have been added to Qt libraries, and while many were ported
to range-for in Qt 5.7, there are still new ones added every
day, which is a nuisance, to say the least.

This patch introduces a technical way to prevent new foreach
use to creep into Qt libraries after they have been cleaned,
by simply not defining either Q_FOREACH or foreach when the
QT_NO_FOREACH macro is defined. This way, one library at a
time can be ported away, and, once ported, is guaranteed to
actually stay ported.

Change-Id: Ie042e84d6c7d766bd16095f9bc1118a8e0ce0c7a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-05-11 16:55:22 +00:00
Mitch Curtis
e64b2234e8 QImage::setPixelColor: warn about invalid colors
Task-number: QTBUG-52142
Change-Id: I9f390bd332f8edabaece75a6b36830c691ff4b9e
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2016-05-11 07:21:02 +00:00
Anton Kudryavtsev
361564dacf QDateTimeParser: adapt unquote() to make good use of QStringRef.
Avoid unnecessary allocations.

Change-Id: I9bed622c0dd7d9fe993b52d9169d1773957da4f2
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-05-11 06:44:22 +00:00
Anton Kudryavtsev
c6618cb885 QDateTimeParser: de-duplicate calls and cache results
Change-Id: I0d6065fbdd19acff14072ff626585e8a12a3e073
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-05-11 06:44:11 +00:00
Laszlo Agocs
834087c324 eglfs: Fix DRM+KMS backends
The native display was simply invalid.

Task-number: QTBUG-53225
Change-Id: I682fb1d91dbea3dab971a079060d181fc313da46
Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
2016-05-10 23:24:54 +00:00
Thiago Macieira
ace5e5fc7b Add support for -Werror with ICC 17 on Linux
Change-Id: Id75834dab9ed466e94c7ffff14447a58fe16617f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-05-10 23:11:34 +00:00
Thiago Macieira
967c91e777 Make it an #error if we failed to detect the ARM architecture version
... or if it is less than ARMv5. The last ARMv4 Qt supported was Windows
CE 7, which was dropped for Qt 5.7 alongside MSVC 2008.

Change-Id: Ifc817705441a4aab9469ffff141dcfe491464efa
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-05-10 23:11:22 +00:00
Marc Mutz
df89dfee4f QEglFSKmsIntegration: use new QJsonObject::value(QLatin1String)
Allows to get rid of some QStringLiterals.

Change-Id: I546aace6876cf373b1cb67269fcc3d042dfd3aac
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-10 21:20:40 +00:00
Marc Mutz
e54c74e3f0 QImageWriter: use new QJsonObject::value(QLatin1String)
Allows to get rid of some QStringLiterals, reducing QtGui
text size by ~200b.

Change-Id: I0f3a84c1c8ee6771d8e1f2c6284d314b3fc0c28a
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-10 21:19:09 +00:00
Marc Mutz
f5aa65349c QFactoryLoader: use new QJsonObject::value(QLatin1String)
Allows to get rid of some QStringLiterals, reducing QtCore
text size by ~800b.

Change-Id: I8f7e57927163eaaf628e42020f83f053faea6bf8
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-10 21:18:52 +00:00
Marc Mutz
a5159cc50a QJsonObject: add some overloads taking QLatin1String
QXmlStreamReader also has QLatin1String overloads, which
greatly benefits parsers, since the vast majority of keys
in both JSON and XML are US-ASCII. This patch adds such an
overload to the JSON parser.

The value() function is all typical parsers need, so even
though many more QJsonObject functions taking QString could
benefit from the same treatment, value() is the single most
important one for read-only JSON access.

Add some more overloads, too, for functions that don't need
more internal scaffolding than value(). Requires adding a
dummy op[](QL1S) (forwarding to the QString overload) so as
not to make

  QJsonObject json;
  json[QLatin1String("key")]; // mutable

ambiguous between const op[](QL1S) and mutable op[](QString).

[ChangeLog][QtCore][QJsonObject] Added value(), op[] const,
find(), constFind(), contains() overloads taking QLatin1String.

Change-Id: I00883028956ad949ba5ba2b18dd8a6a25ad5085b
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-10 21:18:46 +00:00
Simon Hausmann
5e51b15066 Prospective MSVC 2013 build fix
MSVC 2013 does not like QStringLiteral between brackets.

Change-Id: Ic42f80b7a3abbb48df3d0e222bd5c868045a0ded
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-05-10 13:55:29 +00:00
Maurice Kalinowski
4c06592ad8 Fix build on WinRT
a63ca3fa10 caused a build breakage
for WinRT as GetModuleHandleEx does not exist on that platform.

Change-Id: I143d9cad5f32d98a4d86292dfa73f94a4acdf305
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2016-05-10 13:55:26 +00:00
Anton Kudryavtsev
2f595a0178 QUrl: enable (N)RVO for gcc
Change-Id: Ie0fba08ce55a3c60a5b1565986c4280f065c7b2f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-05-09 18:58:08 +00:00
Anton Kudryavtsev
7abb90a70a QDateTimeParser: proper construction of QString
... with known size and known char by corresponding ctor.

Don't use fill() for this case.

Change-Id: I475a0655132ecbb40b1eac919309597b2560e71b
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-05-09 18:57:57 +00:00
Richard Moe Gustavsen
c906d7abb8 QWidgetTextControl: ensure we listen for changes to cursorFlashTimeChanged
Change 3cdc02d actually "reverted" the behavior of listening for
cursorFlashTimeChanged. The reason is that we sat "blinkingEnabled"
directly to true in the constructor instead of calling
"setCursorBlinking", which was responsible for setting up the
connection.

And as it turns out, after 3cdc02d, nobody is actually calling
"setBlinkingCursorEnabled" anymore. From the widgets
point of view, it should always blink when visible
(unless QPA sets cursorFlashTime to zero). So we can remove the whole
function, and set up the connection in "setVisible" instead.

Change-Id: I577a5fbbbd9c56331ac7f8bb38567a684ca8c1df
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
2016-05-09 11:38:44 +00:00
Miikka Heikkinen
f643f6504b Fix ANGLE glGetUniform*v functions to work properly with arrays
glGetUniform*v functions are supposed to return just a single
array element, so returning the whole array is always incorrect.

Task-number: QTBUG-53072
Change-Id: I22f05d420082d4d9de06d975b3d0f5e64d3e0c41
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-05-09 11:15:07 +00:00
Venugopal Shivashankar
09d1554599 Doc: Highlight Quick Controls 2 - Gallery example
Removed Qt Quick Controls 1 examples from the highlited
list, and also removed the webkit1 and webkit2-related tags.

Change-Id: I674dc00544bc70c50460a64690d1062835885fc0
Reviewed-by: Sami Makkonen <sami.makkonen@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-05-09 09:13:40 +00:00
Jędrzej Nowacki
45655cbe8d Be more specific what is in Core and what is not
!isComplex is quite good heuristic, but we know for sure which types
should be included.

Change-Id: I609d021b8a668e6c1945ed2b11d69f5a82b5e2bf
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-05-09 08:48:19 +00:00
Liang Qi
566ccd3ca8 QNX: Force use of system zlib on Windows host
While we on Linux will do a compile test to check for a
system zlib, the test on a Windows host was less accurate, causing
us to compile in the zlib from 3rdparty/ here. This caused compilation
errors after updating the freetype font engine to support color fonts,
since the zlib in 3rdparty/ was included implicitly in the freetype
library, and since it depends on Qt headers, the compilation failed
in this context.

The hotfix is to force system zlib on QNX for Windows hosts, since
we know it is available in the NDK. Doing a proper build check is not
worth it right now, due to future plans for changing configure. We
will still break for an explicit -qt-zlib compilation, so the plan is
to fix this in an upcoming commit by separating libpng into
a library.

The hotfix just follows e6cb3b8c.

Task-number: QTBUG-53248
Change-Id: I07dd4356fae6397b3cc93fc1fa97bf35380e19df
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2016-05-09 08:11:04 +00:00
Marc Mutz
4a4b377cd0 QJsonValue: don't create a temporary QString on every toString() invocation
The vast majority of users call toString() without the optional
defaultValue. So do it like the toArray() and toObject() methods
and split toString() into two overloads, so the common case no
longer needs to pass a temporaray QString.

Saves ~1.4 and ~1KiB in QtCore and QtGui text size, resp., on
optimized GCC 6.0 Linux AMD64 builds, even though we added a new
function to QtCore, too.

Change-Id: Ibe02397ca49ce11fdb58f5c5fc69e909bf94c1c6
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-05-09 08:10:13 +00:00
Thiago Macieira
0b1b06ffc0 Add a QMutex::isRecursive() const noexcept
This is source- and binary-compatible, including the marking of the
existing function as noexcept.

[ChangeLog][QtCore][QMutex] Made the isRecursive() method be a const
function so that it can be called in const QMutex objects too.

Change-Id: Ifea6e497f11a461db432ffff1448bead97c08f92
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-05-09 07:48:30 +00:00
Thiago Macieira
75d65600f9 Work around ICC's bug in making std::atomic a literal type
ICC 15.x and 16.0 (beta, at least) are missing the "constexpr" and
"noexcept" keywords in the definition of the std::atomic
constructors. The lack of constexpr makes std::atomic a non-literal
type, which in turn makes QBasicAtomicInteger's constructor (which is
constexpr) fail to compile.

Reported as Intel issue 6000117277.

Change-Id: I4a88bcca48bf0ce51557d809ef32a4545edcafee
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-05-08 18:10:36 +00:00
Thiago Macieira
29efec2d8c Mark QThread::currentThreadId() as a pure function
It always returns the same information for each thread it is called
in. But since it's different per thread, we don't think it's
const. pthread_self() on Linux is marked const, though we think it
really ought to be pure. On other OSes, the annotation isn't present,
but the we can assume function is so.

Change-Id: Ifea6e497f11a461db432ffff1448c2b37d94d5f3
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-05-08 06:51:27 +00:00
Thiago Macieira
a63ca3fa10 Implement QLibrary::PreventUnloadHint for Windows
It's interesting that the HMODULE/HINSTANCE pointer points to something
in the actual module that got loaded, so we can use its value as
"address of something in the module" for GetModuleHandleEx. The "PIN"
flag tells the Windows DLL loader to never unload.

Change-Id: Ifea6e497f11a461db432ffff1449a2169eb6293e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-05-08 06:51:24 +00:00
Thiago Macieira
04ca11e6f9 Remove includes to qdatetime_p.h that aren't necessary
Since I'm changing QDateTime's privates, it's easier to know what may be
depending on it or not.

Change-Id: Id5480807d25e49e78b79ffff144a53018d057e19
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-05-08 06:51:22 +00:00
Thiago Macieira
0b2bc18efd Mark QTimeZone constructor nothrow.
Change-Id: Id5480807d25e49e78b79ffff144a9eead3fc9597
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-05-08 06:51:18 +00:00
Liang Qi
857912b605 Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7 2016-05-06 22:20:08 +00:00