Commit Graph

4402 Commits (c26d5cf6ef50ea102cfb18eb2109f60bcdfdafb6)

Author SHA1 Message Date
Maurice Kalinowski c73fe94285 WinRT: Do not forget the path specification
The path value can be used to access any container or subcontainer
in the settings, even if it is not created by Qt.

Change-Id: I431d8a8b129dafb4ec85227421dc37ec76c18ecf
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-08-19 08:58:09 +02:00
Giuseppe D'Angelo 75b62f3a17 Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-08-19 00:42:00 +02:00
Allan Sandfeld Jensen 04c42d2d09 Compile on Android without statfs.f_flags
Not all Android versions appear to have f_flags in statfs, but we
can check for the presence using a feature define.

Change-Id: Ib2acf6063d6211b871f462ee491459ac8675aa37
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-16 09:49:53 +02:00
Marc Mutz 09d6bbebc2 QMimeData: replace an inefficient QList with a QVector
QMimeDataStruct is larger than a pointer, so holding it in a
QList is horribly inefficient.

Fix by marking as movable and holding in a QVector instead.

Change-Id: If285dd31546066db0b240ea0d4d30668f50b5f2c
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-15 19:19:20 +02:00
Jędrzej Nowacki 8f8c7e8a2b Remove redundant code from QMetaProperty.
The code contained old Qt4 logic. There is no point in checking values
of QVariant as they are in sync with QMetaType.

Change-Id: I58ace52f69939488e6ea7e7bab98df38419420a8
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-14 09:23:25 +02:00
Andrew Knight 2be0bf0765 winrt: Fix deadlock in thread dispatcher access
An event dispatcher fetching the core dispatcher can deadlock when
looking up the window. Simplify this by only looking up the view, and
treating the event dispatcher as one which will never obtain the core
dispatcher. This fixes a deadlock which occurs when starting network
delegates.

Change-Id: Ic27f4ab6f168eb95f3de70d78d64f035c331a7f5
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-13 21:09:45 +02:00
Ivan Komissarov 6c3c1a4cb8 Add the QStorageInfo class
Allows to retrieve information about mounted volumes such as label,
total/available size, filesystem type and so on.
Possible use cases are:
- allows to do checks about filesystem before performing actual
  operation (such as available/maximum volume size)
- allows to retrive information about volume that can be shown in file
  dialogs
- allows to retrieve volume for specific path and check if two or more
  paths belong to the same volume or not

[ChangeLog][QtCore] Added QStorageInfo class to retrive information
about mounted volumes and drives

Change-Id: Ibf9c2e6b53ef39c5605894a4422acdbbca4030c4
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-13 16:09:58 +02:00
Maurice Kalinowski 091653e9e7 Implement native settings format for WinRT
WinRT stores settings inside the app bundle, not in the registry.
Some tests are not fully functional due to errors in the file
implementation (See QTBUG-40588).

QSettings::SystemScope translates to a roaming container on WinRT,
meaning that settings stored inside there should be uploaded and
shared among devices. However, this is untested so far.

The tests have been updated for those platforms which do not store
the order of keys. This has been done on some locations only so
far, but needed to be done on more places for WinRT.

Task-number: QTBUG-33498
Change-Id: Ifd0194387b09c220d31812b4b6fd0ce9a7d84d24
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-08-13 09:40:56 +02:00
Olivier Goffart 7ca5af28d0 Fix error reported by address sanitizer
One can't dereference the null pointer value. Even to access a static member.

Change-Id: I5edc92d7886ccc7029d1f3c00a12de78b439f080
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-12 23:59:59 +02:00
Frederik Gladhorn ca524e5b70 Merge remote-tracking branch 'origin/5.3' into 5.4
Manually included changes from
3a347a4e70
in src/opengl/qgl.cpp.

Conflicts:
	src/opengl/qgl_qpa.cpp
	src/plugins/platforms/android/androidjnimain.cpp

Change-Id: Ic26b58ee587d4884c9d0fba45c5a94b5a45ee929
2014-08-12 13:05:02 +02:00
Andrew Knight 34198cedbe winrt: Fix core dispatcher lookup
The core dispatcher lookup should be performed from the constructor
in all cases but the first (WinMain) thread, and only rechecked if the
thread changes.

Change-Id: I05f0c15b3e199994aa5d740b2092b42fb8d2f596
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-11 23:29:27 +02:00
Olivier Goffart c2badc7423 Fix disconnect()ing from signals declared in a base class
Fix disconnection from pointer to member signal that belongs to the base
class, but whose type is a pointer to a member of the derived class.

Commit 9cc106d9d7 fixed connect, so apply
the same fix in disconnect

[ChangeLog][QtCore][QObject] Fixed disconnecting from pointer to member
signal that belongs in the base class but whose type is explicitly given
as a pointer to a member in the derived class

Task-number: QTBUG-40638
Change-Id: Ia546fc8f36e1ea0dd0645bdd820aea47f43677ac
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-11 16:49:01 +02:00
Jędrzej Nowacki 8f22f242a2 Micro-optimize QUrl::topLevelDomain
Using QStringRef saves few instructions

Change-Id: I0d67a1f6a1c1385c88a8b21cb98b9c7dbdfb66e5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-09 15:37:11 +02:00
Jędrzej Nowacki 4413254ff6 Micro-optimize QDir::relativeFilePath
Use QString::splitRef on platforms with case sensitive paths, to
avoid unnecessary allocations.

Change-Id: Iff331a5eb67c4cbaf1333e663e77290261c5b013
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-08-09 15:37:04 +02:00
Thiago Macieira 65ade55c8c Add QtPrivate::is_const and is_volatile
And correct the comment by listing more types that are available

Change-Id: I9cb4b664f97300357a55d81bc99dd542a29e933b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-09 15:35:56 +02:00
Marc Mutz e41b45f1ae QPair: add constexpr liberally
On templates, adding constexpr makes a given instantiation constexpr
if it can be.

This turns qMakePair(0,0), say, into a compile-time constant.

The effects on existing code are small, but exist:

  $ size lib/*{-baseline,-paircexp} | sort -nr
  6516727  211192    2608 6730527  66b31f lib/libQt5Widgets.so.5.4.0-baseline
  6516711  211192    2608 6730511  66b30f lib/libQt5Widgets.so.5.4.0-paircexp
  5373720   44492   15976 5434188  52eb4c lib/libQt5Core.so.5.4.0-baseline
  5373504   44492   15976 5433972  52ea74 lib/libQt5Core.so.5.4.0-paircexp
  5107206  125072    6080 5238358  4fee56 lib/libQt5Gui.so.5.4.0-baseline
  5107030  125072    6080 5238182  4feda6 lib/libQt5Gui.so.5.4.0-paircexp
  1341290   30180    2600 1374070  14f776 lib/libQt5Network.so.5.4.0-baseline
  1341210   30180    2600 1373990  14f726 lib/libQt5Network.so.5.4.0-paircexp
  # no other libraries benefit

[ChangeLog][QtCore][QPair] Can now be used in C++11 constexpr contexts.

Change-Id: I3872e6aa33a7d02a168516f4dfa7119efcac8c40
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-09 09:06:16 +02:00
Marc Mutz 28bb18c0c0 QStringRef: add missing \since 5.4
{,c}{begin,end}() were added post-5.3, in 1a6f490b, but weren't marked with \since 5.4.

Add it.

Change-Id: Ide743833144f784c7d09b125e7a22f9b184ed823
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-09 09:05:51 +02:00
Thiago Macieira dcf9883dff Move the special QByteArrayList methods into QList
and make QByteArrayList be a simple typedef.

As a side-effect, the constructor taking a QByteArray is no longer
available since I couldn't find a way to add it to QList<T> when T is
QByteArray. My template-foo failed me. I tried:

 - QEnableIf<is_same<T, QByteArray>::value, QByteArray>::type
   => makes QList fail to compile for any T that isn't QByteArray
 - make the constructor a template member
   => it compiles if the parameter is a QByteArray, but not a const
      char[4] like the test was
 - inheriting constructors
   => runs into ICC and Clang bugs that I could not work around

Besides, the constructor with std::initializer_list is a superior
solution anyway.

Change-Id: Ic86fbadc1104142bfd907a5c4147199bf839fb89
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-09 09:05:43 +02:00
Glen Mabey 35105f173e Long live QByteArrayList!
Initial submission of a new class QByteArrayList with the
purpose of aggregating and then joining QByteArray instances.

[ChangeLog][QtCore] Added new QByteArrayList class.

Done-with: Marc Mutz <marc.mutz@kdab.com>
Change-Id: I503af58f125d7f44fef10360177490c933e5840f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-09 09:01:41 +02:00
Keith Gardner a332322de9 Long live QVersionNumber!
The class provides compare operators, stream operators, and hashing
functions. This class aims to be compatible with (but not restricted to)
the Semantic Versioning 2.0 standard (semver.org).

[ChangeLog][QtCore] Added QVersionNumber class

Done-with: Marc Mutz <marc.mutz@kdab.com>
Change-Id: I244c8ccc002909af03987a2df052734d1a8621a9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-08-09 09:00:24 +02:00
Olivier Goffart 3750c677ee QObject: fix valgrind warning when disconnecting
QObjectPrivate::Connection::method should never be called when
the Connection was made with the function pointer syntax

This caused valgrind warning about using uninitialized value on such code:

 QObject::connect(&o, &Object::aSignal, &o, &Object::aSlot);
 o.disconnect(&o, SLOT(aSlot()));

Change-Id: Iaff9ecd3ddfe665db92726b420021493453c4cea
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-09 08:31:20 +02:00
Thiago Macieira 6a237a4e76 Add some missing STL typedefs and functions to QStringRef and QByteArray
These will be needed in some template code that is to come.

Change-Id: I5b93f4320313f7b15a6404de2c98f85485735fda
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-08 00:05:03 +02:00
Thiago Macieira e8150576cd Document missing QLatin1String methods
Most of them were added before 5.0, but it's ok to just list as 5.0.

Change-Id: I6e83a210a0165659f710d47ed595e9e89d5dbac9
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-08-07 22:39:40 +02:00
Thiago Macieira e26404e43f Add missing #include <qdatastream.h> or <qiodevice.h>
Lots of code depended on an indirect includes from qstringlist.h.

Change-Id: I33d0dce33d64302d6c0e49180cc1249b90ab27c5
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-07 08:41:45 +02:00
Andrew Knight ed7894dd77 winrt: Handle dispatcher thread change
If the calling thread changes when processing events, the dispatcher
will no longer have thread access and event processing will fail. This
can e.g. prevent new threads from being created. To remedy this, the
dispatcher object is re-fetched if the thread is changed.

Change-Id: I519cff521f9b84211db3f28a7a28b532de44a6a4
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-07 08:52:34 +02:00
Marc Mutz 7f78d547ca QCommandLineParser: support extremely concise option configuration in C++11
The goal of this commit to make the code in the test work:

    QCommandLineParser parser;
    parser.addOptions({
        { "a",                "The A option." },
        { { "v", "verbose" }, "The verbose option." },
        { { "i", "infile" },  "The input file.", "value" },
    });

For this, QCommandLineParser needs a version of addOption that can
take a list of options. That's what addOptions() is for.

More importantly, the QCommandLineOption ctors mustn't be explicit.
OTOH, any implicit conversion from QString or QStringList to
QCommandLineOption is also undesirable.

To solve this dilemma, add new QCommandLineOption ctors that just
take one argument and are explicit, and make the existing ctors
implicit. In order to avoid ambiguities, remove the default values
of their resp. 2nd arguments. The new ctors are by intention not
\since 5.4, as they are completely transparent to the user.

Et voila, even better than getopt_long(3).

[ChangeLog][QtCore][QCommandLineParser] Added addOptions() method.

Change-Id: I5e779f3406cd0f6c8ec6ecbf6c8074af226de300
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-06 22:17:22 +02:00
Christian Strømme 682976def7 Android: Fix recursion bug in callStaticMethod()
calling callStaticMethod() with template type jlong, jdouble or
jboolean would cause the call to loop indefinitely.

Change-Id: I99caa576e761fdef623ece04e0779e4cf2535592
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-06 17:16:22 +02:00
Jędrzej Nowacki 1fceabe8c7 Implement QStringRef::split
[ChangeLog][QtCore] Added the QStringRef::split() function

Change-Id: I28709c9761785dea7be4e7d621ecf4e1ae007a72
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-06 14:04:40 +02:00
Peter Kümmel 4124cd159e Undo: Fix state entry bug for parallel state groups
This commit reverts c4cef6fae9.
The above fix for QTBUG-25958 (cloned in QTBUG-40219) is not
complete and introduces the regression QTBUG-30049.

Task-number: QTBUG-30049, QTBUG-25958, QTBUG-40219
Change-Id: I3c4b774dce06c13cb4e089f8413a7747cedfd212
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-06 07:21:18 +02:00
Thiago Macieira 11bbacf194 Remove the last remnants of iWMMXt in Qt
This code hasn't been tested for at least 4 years. It's not maintained
and probably doesn't work.

Change-Id: I4b9a5179e34111b400914f91caa6b741b69771bb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-08-05 19:23:31 +02:00
Thiago Macieira 9c22b5c30a Doc: normalize the {to,from}WCharArray text about encodings
Properly capitalize the names UTF-16 and UCS-4 and make sure we talk
about UTF-16 and not UCS-2. UCS-2 is not the same and does not support
surrogate pairs.

Task-number: QTBUG-35287
Change-Id: If33270996bacc9ae5d04c87423fa1ee9ddaff230
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-08-05 19:23:29 +02:00
Thiago Macieira 986230eef9 Add a few missing Neon constructs
The #undef in qcompilerdetection.h was missing.

And apparently we can detect Neon since Windows Mobile 6 too.

Change-Id: I38a5f71b2704a29a706183e39f43db3a78a729db
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-08-05 19:22:52 +02:00
Marc Mutz c55aec2ed7 QFutureInterface: allow to work with a QThreadPool != globalInstance()
Background:
It is often necessary/advisable to schedule tasks on thread pools !=
globalInstance(). As Herb Sutter writes in
http://www.drdobbs.com/parallel/use-thread-pools-correctly-keep-tasks-sh/216500409
and the Qt Training Material stresses, tasks you schedule on a (global)
thread pool should be non-blocking, which currently rules out using any of
the QtConcurrent functions for, say, file I/O.

Nonetheless it's often convenient to have thread pools also for file I/O, as
the thumbnail viewer exercise in the Qt Training Material shows. In this
case, you'd use a dedicated thead pool, leaving the global thread pool for
CPU-bound tasks.

Yet, none of the QtConcurrent functions allow to pick the QThreadPool
instance on which to schedule the work created with them.

This patch prepares for them to do so.

This is the first part of the forward-port of
https://qt.gitorious.org/qt/qt/merge_requests/1281.

Implement by using a new QThreadPool* member that defaults to nullptr,
and adding setThreadPool to set this member, then using it in lieu of
QThreadPool::globalInstance() everywhere.

I chose to leave m_pool == nullptr to mean globalInstance() to avoid
creating the global instance whenever a QFuture is created, even if the
future represents the result of a calculation not run on the global thread
pool.

[ChangeLog][QtCore][QFuture] Can now be used with any QThreadPool, not
just globalInstance().

Task-number: QTBUG-17220
Change-Id: I4e1dc18d55cf60141b2fa3d14e2d44a3e9e74858
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-05 18:04:56 +02:00
Olivier Goffart 27b67c5399 Logging: use the known function when the first frame of the backtrace is unknown
Change-Id: Ia591805c82e7bf77dc7af04f1054c7daca58eb6a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-05 16:52:34 +02:00
Frederik Gladhorn b53e08e335 Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/dev 2014-08-05 16:47:13 +02:00
Friedemann Kleint 72037c804d Add Q_ENUMS for Qt::MouseEventSource, Qt::FocusReason.
Change-Id: Ic91b9a74d0c28ec225d2708a13aafddd1e2c32af
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-05 06:33:39 +02:00
Friedemann Kleint 02702dd776 QList: Fix MSVC 64bit warning about loss of data.
qlist.h(133) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
qlist.h(131) : while compiling class template member function 'QList<QString>::QList(std::initializer_list<T>)'

Change-Id: I8a11e298cd10da199490fbd8b269405a9e1cf5f3
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-05 06:32:28 +02:00
Frederik Gladhorn 0936bc54f9 Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
	config.tests/arch/arch.cpp
	src/opengl/qgl_qpa.cpp
	src/widgets/kernel/qapplication.cpp

Change-Id: I80b442a4c2c9632743a5b5c7319ff201ec5bc4fd
2014-08-04 09:51:36 +02:00
Marc Mutz 86789a48f7 QList: add missing reserve() call in the initializer_list ctor
Change-Id: Idc46a347009556d06db4bc1f7ce3e2613fb1a405
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-03 01:26:14 +02:00
Allan Sandfeld Jensen 985ebe32f2 Support multimedia keys on Windows
We currently do not receive events from most multimedia keys on Windows
because they are sent using appcommand events instead of the normal key
events.

This patchs adds support for parsing appcommand events.

Change-Id: I19f568b6fa0d3d136e3a22318df1499a1fab6edb
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-02 03:00:38 +02:00
Laszlo Agocs e453484bca Make QOpenGLWidget public
QOpenGLWidget is now public.

In addition Qt::WA_AlwaysStackOnTop is introduced to support the
special case of semi-transparent QOpenGLWidget or QQuickWidget on
top of regular widgets.

hellogl_es2 becomes the qopenglwidget example. This example performs
painting both via QPainter and native GL commands and has the OpenGL
widget combined with other, normal widgets.

The widget stack receives some changes when it comes to renderToTexture
widgets like QQuickWidget and QOpenGLWidget. Calling update() will now
result in a paint event, which is essential for QOpenGLWidget since we
want it to behave like a regular widget. The dirty region handling is
extended specially for such widgets due to performance reasons.
(an OpenGL content update must not result in any backingstore painting,
and is thus handled as a different kind of dirtiness)

[ChangeLog] Added QOpenGLWidget. This widget serves as a replacement for QGLWidget.

Task-number: QTBUG-36899
Task-number: QTBUG-40086
Change-Id: Ibf7f82fea99b39edfffd2fc088e7e0eadbca25cf
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-01 17:13:59 +02:00
Marc Mutz 0e7100d8c0 QTimeZone: optimize QTimeZonePrivate::isValidId()
This function is used in the named timezone ctor and was using QByteArray::split(),
followed by size checks and a linear scan for invalid chars per section. The use of
split() resulted in a lot of memory allocations and, unsurprisingly, bad performance.

The new code just performs one linear scan through the byte array, calculating
section sizes on the fly.

Benchmark results (with the test data in tst_QTimeZone::isValidId_data()) show
typical speedups of ~10x for valid IDs:

   RESULT : tst_QTimeZone::isValidId_bench():"minimal middle":
  -     0.00036 msecs per iteration (total: 95, iterations: 262144)
  +     0.000035 msecs per iteration (total: 74, iterations: 2097152)

Even in the sweet-spot case of the old code---a space character anywhere in the
string, checked for before the split---the new code is anywhere between slightly
faster and not much slower:

   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ' ' front":
  -     0.000011 msecs per iteration (total: 94, iterations: 8388608)
  +     0.000010 msecs per iteration (total: 86, iterations: 8388608)
   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ' ' middle":
  -     0.000014 msecs per iteration (total: 62, iterations: 4194304)
  +     0.000016 msecs per iteration (total: 69, iterations: 4194304)
   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ' ' back":
  -     0.000018 msecs per iteration (total: 79, iterations: 4194304)
  +     0.000023 msecs per iteration (total: 98, iterations: 4194304)

This is not surprising, as the space character was singled out for a fast-exit
check before. For any other invalid character, the new version is anywhere from
15x to 35x faster:

   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ? front":
  -     0.00034 msecs per iteration (total: 91, iterations: 262144)
  +     0.000010 msecs per iteration (total: 87, iterations: 8388608)
   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ? middle":
  -     0.00036 msecs per iteration (total: 96, iterations: 262144)
  +     0.000016 msecs per iteration (total: 68, iterations: 4194304)
   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ? back":
  -     0.00035 msecs per iteration (total: 94, iterations: 262144)
  +     0.000021 msecs per iteration (total: 92, iterations: 4194304)

If there was a deeper reason to single out the space character, that fast-exit
path can easily be restored.

This function is often used in conjunction with availableTimeZoneIds(), which
currently vastly dominates the runtime of the function calling both, but I'll
add another optimization for the common use-case of just checking for a time-zone's
existence in a subsequent commit.

Change-Id: Ife1d096fcd39464083ea464c23e49ad98fabf345
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-07-31 21:05:20 +02:00
BogDan Vatra 734c126826 Android: Really suspend apps that are put in the background
The main event loop will be paused when an application is suspended,
this is also the normal behavior of any Android application. When an
application is suspended on Android all its Gl surfaces are destroyed
and can't be used to render anymore. So, we need to pause the main
event loop in order to pause all the timers which might trigger
drawings. The event loop is resumed immediately after the application
is foreground. AndroidManifest.xml contains more info about how to
disable this behavior and what might happen if you do it.

[ChangeLog][Android][Important Behavior Changes] The main event loop is
now stopped when the app is suspended

Task-number: QTBUG-36274
Change-Id: I4c0ba5df9d95f348bca67ea5c76865d6d20775e4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-07-31 19:20:28 +02:00
Thiago Macieira 7f9398fd4d Add ascii_isspace to replace the locale-dependent isspace(3)
Change-Id: Icee42515179e6f3ddefe0692af69e90054449618
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-07-31 18:51:40 +02:00
Jędrzej Nowacki 2eea6034bc Micro-optimize QXmlStreamReaderPrivate.
Avoid redundant QStringRef to QString conversions.

Change-Id: I4a65119e7821206e2f72387a5d02cec5ce39dbfb
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-07-31 08:50:42 +02:00
Jędrzej Nowacki f5c3126201 Add QString::splitRef functions.
The functions can be used to optimize code that do not need to use
the split results as QString directly.

[ChangeLog][QtCore] QString can now split a string to a list of
QStringRef.

Change-Id: Ic2dc929e1fba82f9a060e37c51068a301cb5b866
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-07-31 08:50:22 +02:00
Thiago Macieira 2ef10d8473 Doc: update the list of typical values for xxxCpuArchitecture
If we wanted to make the list exhaustive for buildCpuArchitecture, we'd
add alpha, avr32, bfin, s390(x), and sh. I don't want to make it
exhaustive because that's cluttering the documentation and we'd have to
keep in sync with archdetect.cpp. And we can't make
currentCpuArchitecture exhaustive, since it depends on the output from
uname(2).

You can argue that neither IA-64, POWER, nor SPARC architectures are
typical these days...

Change-Id: I0a5310770947263e1bafd9443ea59420813c51a8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-07-31 03:23:16 +02:00
Thiago Macieira b5d5d06353 Attempt to add support for Solaris sysinfo call
Totally untested.

Change-Id: I2c2347a66cb3fcb71d97782090ac628bef0b247f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-07-31 03:23:12 +02:00
Thiago Macieira 01cce12820 Use an enum to check that the OS is saving the register state
It's easier to read AVXState and AVX512State than 6 and 0xe6.

Also add a note that where we should have checked whether the SSE state
is being saved by the OS. However, we won't do it because it's just a
waste of CPU cycles: any OS Qt 5 runs on will enable the proper
state-saving.

Change-Id: Id87b59fe1388a6cab983c9412341e36a86dd15c5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-07-31 00:52:35 +02:00
Frederik Gladhorn 4010cfbf2d Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/dev 2014-07-30 22:52:15 +02:00