Commit Graph

22625 Commits

Author SHA1 Message Date
Olivier Goffart
50e2bc2aa0 Fix QDebug cumulating operator<< with many Q_ENUM
The problem is that the operator<< was taking a non-const reference to the QDebug
object. This causes a problem as all other operator<< return a temporary.
Since every other roperator<< takes the QDebug by value, we should also take it by value
in this case.

Move the operator<< in qdebug.h because i don't want to #include qdebug.h from qobject.h
And move the qt_QMetaEnum_debugOperator to be in the corresponding .cpp

Task-number: QTBUG-44462
Change-Id: Ia01629224c58930c2997e767efc43de90d6309e2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-17 06:17:59 +00:00
Andrew Knight
b63c721a0e xcb: Fix build with -no-xcb-xlib -qt-xcb
The EGL integration should not call Xlib functions in this case.

Change-Id: I46656b12d603ca1b4b0b41f34c3c0e8410c91db8
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-02-17 05:09:17 +00:00
Thiago Macieira
51b7bd1e4f Output the JSON binary data with printable characters
This makes it easier to debug QJsonDocument binary bugs.

Note that the last character is never printed as printable, but by way
of construction it's always binary data anyway (the offsets table is at
the end after parsing JSON sources).

Change-Id: I8a7a116f51864cecb52fffff13bc24ad01ad8a49
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-17 00:42:26 +00:00
Thiago Macieira
b584648df1 Use Clang 3.6's __builtin_assume in Q_ASSUME
It's more efficient than the current implementation. Example:

int f(int i)
{
    Q_ASSUME(i < 8);
    return i < 8;
}

Before:
        cmpl    $8, %edi
        setl    %al
        movzbl  %al, %eax
        retq

After:
        movl    $1, %eax
        retq

Change-Id: I1a800c709d3543699131ffff13c1c50713a8da2c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-17 00:42:04 +00:00
Thiago Macieira
738e9b185c Fix Intel compiler warning about change of sign
The variable c is unsigned, so the second operand is unsigned,
constraing the -1 to be unsigned too and causing a change of sign.
Instead, cast the middle operations to int, as that's the return value
anyway.

error #68: integer conversion resulted in a change of sign

Change-Id: I1a800c709d3543699131ffff13c2fd79f14f8b43
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-17 00:42:00 +00:00
Thiago Macieira
aa855afa44 Fix compilation with ICC: failure to parse placement of Q_DECL_OVERRIDE
This is the right way:
  void (*getProcAddress(const QByteArray &procName)) () Q_DECL_OVERRIDE;

However, ICC and GCC do not get it. They expect it in the form:
  void (*getProcAddress(const QByteArray &procName) Q_DECL_OVERRIDE) ();

ICC complains with an error, so this needs a workaround. GCC ignores the
incorrectly-placed "override", so it just looks to GCC like no "override"
was added.

See also: https://groups.google.com/a/isocpp.org/forum/#!topic/std-discussion/IjVB8CWiS5A
Change-Id: I1a800c709d3543699131ffff13c2ffc9cee46245
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-17 00:41:41 +00:00
Sérgio Martins
fbeeaf23fe Introduce QT_NO_MIMETYPE
The mime type stuff generates one of the biggest translation units in QtCore
due to the compressed 1.7MB freedesktop.org.xml resource.

With QT_NO_MIMETYPE, libQt5Core.so is almost 400Kb smaller
(4.8MB->4.4MB gcc 4.9 stripped release build)

Change-Id: I5339090994034355724ff4deddb64720e81baeaf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-17 00:06:47 +00:00
Sergio Ahumada
3c1d9911c4 Fix license headers
Change-Id: I964ca9d3aff1a1cbe39dc53d04a408c754e96a77
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-02-16 17:08:39 +00:00
Allan Sandfeld Jensen
515e802ae2 Use C++ <cmath> instead of <math.h>
Including math.h can pollute the default namespace, and break
some compilers if cmath versions of the method are declared as using.

Switching to C++ math functions also greatly simplifies handling of
float qreal as C++ automatically chooses the right method.

[ChangeLog][QtCore][QtMath] qmath.h no longer includes math.h, so any
sources depending on that indirect inclusion may fail to build.

Change-Id: I4d0e331dafba354ec05dc5052e61ef4ff8d387fe
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-02-16 16:21:15 +00:00
BogDan Vatra
3d835eb62e Android: Fix compile on arm64-v8a
Android arm64-v8a redefines _POSIX_C_SOURCE to 199506 if _XOPEN_SOURCE is defined.

Change-Id: I04ff616eaac6e08094fc1f58f49bc5a2c31733f0
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-16 16:05:29 +00:00
Yoann Lopes
710cb8e2fc Add configure option and tests for GStreamer.
Qt Multimedia can be compiled with either GStreamer 0.10 or 1.0.
0.10 takes precedence over 1.0 if both are available (1.0 will be used
by default in Qt 5.6).
Auto-detection can be overridden with -gstreamer <version>.

Change-Id: I74d58d2c146c842902375b4d1e5e6e96d32addac
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-16 16:01:34 +00:00
Kai Koehne
478f319df9 LocalSocket: Do not return early in waitForReadyRead
Do not return early on Windows if bytes are still in the buffer.
This is not in line with the behavior on other platforms,
and also breaks apps where the caller knows that the
bytes available are insufficient.

[ChangeLog][Network][QLocalSocket] On Windows, waitForReadyRead
now always waits for more data, even if bytes are still in the
buffer.

Task-number: QTBUG-16688
Change-Id: I1425a5780c7707295374934a6b5446ff8e148cc8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-16 16:01:20 +00:00
Laszlo Agocs
effc6b4cd1 Add widget support for requestUpdate() and improve its docs and tests
We must do something when requestUpdate() is called on a QWidgetWindow.
The semantics of UpdateRequest for QWindow and QWidget are unfortunately
different: for widgets an UpdateRequest means "sync the backing store".
For QWindow it also involves marking as dirty.

Change-Id: Idf40b3fc0873652dc081edeb12c96b3007a126ef
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-02-16 15:56:29 +00:00
Oswald Buddenhagen
69196b38c4 fix non-git shadow builds
the qt headers live in the source dir in this configuration.

instead of hard-coding the path in the project file, use the correct
module variable. this requires harfbuzz-ng to be built after corelib.

Change-Id: If1b64b59a0939d3b5190331fcf70da566d4eeedd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-16 15:12:30 +00:00
Andy Shaw
cbece1e8c4 Ensure the filedialog shows the initial filename
Whenever the selection changes it will call panelSelectionDidChange
even if the panel is not visible which causes it to overwrite our
chosen initial file with "untitled". Therefore we only set the name
when the panel is actually visible.

Change-Id: I09f7ebabce5c2139a7f74b953391d39dfad65db2
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-16 14:59:22 +00:00
Alexander Volkov
76de1ac0a4 xcb: Update mouse buttons from MotionNotify events
We don't receive ButtonRelease event after closing a popup
by clicking outside of the client area. Thus the internal
state of mouse buttons in the xcb plugin becomes outdated
until we receive ButtonRelease event.

This commit updates the internal state of mouse buttons
from MotionNotify events. So when a user will move a mouse
on the client area, the xcb plugin will send a mouse event
with updated buttons to Qt Gui and QGuiApplication will
detect the following mouse events correctly.

Task-number: QTBUG-32609
Task-number: QTBUG-35065
Task-number: QTBUG-43776
Task-number: QTBUG-44166
Task-number: QTBUG-44231
Change-Id: Ica334dfbf04f7ef81db86b25262328fe5da11808
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2015-02-16 13:40:59 +00:00
Richard J. Moore
1748b7e7d2 Use d2i_DHparams instead of poking around inside the DH struct.
This change is a step closer to working with openssl 1.2 which makes
this struct opaque.

Change-Id: I3897142657edc0fa4053142b6ef743c2b00c013e
Reviewed-by: Peter Hartmann <peter-qt@hartmann.tk>
2015-02-16 13:17:47 +00:00
Topi Reinio
0cc37b6e60 qdoc: Clear the list of output files during generator init
QDoc keeps a list of files it generates (or copies) to the output
directory, for writing it to a .qhp file later on.

In single-exec mode, QDoc processes several qdocconf files
without deleting the generator in between. Therefore, we need to
clear the list of files whenever the generator is initialized,
to avoid duplicating the filenames across multiple .qhp files.

Change-Id: Ibc2a6b171466aa1db6cfe3da9a820d5ba2845004
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-02-16 13:10:08 +00:00
Samuel Gaist
de98302f70 Update SQL plugin path within Qt's sources
The current SQL plugins path are still Qt 4 style. This patch adds
qtbase to ensure users will be directed to the right place.

Change-Id: I11bf933864f0a8955079bf7175eb1e33bb5bc07f
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-02-16 11:57:45 +00:00
Sergio Ahumada
662027678b Doc: Update links in INSTALL file
replace qt-project.org/doc with doc.qt.io
also rename macosx-building.html -> osx-building.html

Change-Id: I5b4aaa187562b653407f1f99947df748c3240554
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-02-16 09:06:41 +00:00
Sergio Ahumada
0d963e81da qmake: Replace qt-project.org/doc with doc.qt.io
Change-Id: I503e4e4c50a147cc1d81019228593f502132f28a
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-02-16 09:06:39 +00:00
Florian Bruhin
6aac5c5cf3 Fix links in plural words.
In some documents, "{QObject}s" was used which didn't show up as link. This is
fixed by using "\l{QObject}s" instead.

Change-Id: I90dbd543790842b242a11f3f94a32d4273ebb38d
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-02-16 08:58:34 +00:00
Thiago Macieira
afb52763aa Doc: clarify what QUrl::topLevelDomain actually does
Task-number: QTBUG-44390
Change-Id: I1a800c709d3543699131ffff13c19789a12dac0b
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-02-16 05:31:17 +00:00
Marc Mutz
1d2efe1f27 QDateTime: micro-optimize QDebug op<<
Instead of constructing a QString that describes the QDateTime
instance, stream the constituents of the string into QDebug
directly, using op<< for Q_ENUM, now that it's available.

Adapt test to new format of enums.

Effects on Linux GCC 4.9 stripped release builds:
 text  -1068B
 data    +-0B
 relocs  +-0

Change-Id: I1a5ce28904edd7d0f6c8d982fd41c52e3536e036
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-15 19:38:59 +00:00
J-P Nurmi
85ecc44eee Add missing QPlainTextEdit::createStandardContextMenu(QPoint)
[ChangeLog][QtWidgets] Added QPlainTextEdit::createStandardContextMenu(QPoint)
overload that takes the position in document coordinates. This method enables
the actions that are sensitive to the given position eg. where the user clicked.

Change-Id: I47ed7a1afc4fcfb3318c9b7af37867aeb7f2aa35
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-15 14:25:01 +00:00
J-P Nurmi
25e19acca6 QWidgetTextControl: add object names for standard context menu actions
Mainly for auto testing purposes.

Change-Id: I776f9d7f28f9a04ba3f9a6bbc549d6e86bece876
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-15 14:24:58 +00:00
Mikkel Krautz
b6b5ba0e23 QSsl: teach the SecureTransport backend about TlsV1_0OrLater, TlsV1_1OrLater and TlsV1_2OrLater
Change-Id: I001ffebef30b47b63cae6ea9487d9e96ca85ff92
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-02-15 13:26:47 +00:00
Allan Sandfeld Jensen
839f38bcfa Remove support for some very old compilers
Remove code supporting gcc 4.0 and earlier, and MSVC 2005 and earlier.

Change-Id: I3304e11bb38c101f113c124e8e533c5578badf34
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-15 12:39:29 +00:00
Richard Moe Gustavsen
4ad83407dd QFileDialog: don't warn about directory url prematurly
The app can set a directory url before showing the dialog.
Since we don't really know if the dialog is going to
be native or not at that point, it is too early to warn.

Change-Id: Ie9875ca90a500258841bad702ee864a46775641c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-15 11:13:53 +00:00
Richard Moe Gustavsen
4834439052 QFileDialog: don't clear directory url upon show
If the app sets a directory url that is not a local
file, the url would be cleared just before showing the
dialog. The reason is that we try to convert the url
to a local file when preparing helper options, but fail.
Trying to convert the url in the first place is wrong, since
the app should be able to point the file dialog to any url, not
just local directories.

Since QFileDialogPrivate::init() calls
QFileDialog::setDirectoryUrl(), and setDirectoryUrl() calls
options->setInitialDirectory(), there should be no reason
to set initialDirectory once more in
QFileDialogPrivate::helperPrepareShow(). The easiest fix
is therefore to remove the code in initHelper() that modifies
the initial url.

Change-Id: Ia6c2113e867b1156cf9d59d347116f7df8c06d93
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-15 11:13:47 +00:00
Richard Moe Gustavsen
ab3113b679 QGuiApplication: revert b8d0fac5a9 (mouse event handling)
The current attempt to fix the problem described in b8d0fac5a9
has shown to have unforeseen issues. The assert in the
patch has been triggered in user code (see bug report), which, when
looking more closely, shows that the assert cannot be guaranteed
for all cases. E.g if user code (or Qt drag'n'drop code) starts a new
event loop upon receiving the move event, this can deliver new mouse
events before the move returns, which will trigger the assert.

So it seems like the most correct solution is to *post* the second button
event after all (directly trailing the move event), to at least make sure
mouse events are being delivered in the correct order. The crash that caused
the original change will need to be fixed by other means.

Task-number: QTBUG-38597
Change-Id: I47633d1ea310b7c16e937ef0404d9954281452c3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-02-15 11:12:50 +00:00
Richard Moe Gustavsen
6342c4a183 iOS: only flush non-user input events from layoutSubviews
Change a4e1c15b1 will cause setGeometry to take immediate effect
by doing a synchronuous layout and a flush. As a side-effect, the
flush will also send posted touch events. So if the current
setGeometry call comes from a touchMove, a touchEnd might
be delivered before the touchMove returns.

A crash in QToolBar drag-n-drop is seen from this. There
drag data is deleted on mouse release (during the flush), while
a mouse move is already handled on the stack. When the code returns
to the move handler, drag-data has been deleted, and we have a crash.

Since the root problem is that we flush events on a callback from
the app, we can be more careful and precise by only flushing non-user
input events from layoutSubviews.

Change-Id: I3f5e025d774d21509ef837de9d7e85a1ac6e48cc
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-02-15 11:12:39 +00:00
Richard Moe Gustavsen
f9bb92df24 qstandardpaths_ios: add system path for PicturesLocation
For PicturesLocation we add a second path pointing to
system assets. This url is understood by both QFile (using
a dedicated file engine), and QFileDialog, such that if
you point the dialog to the url, it will show a native
image picker dialog.

Change-Id: Ic79393440ab399ed4802cc6d84ec7ad36cbb9369
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-02-15 11:12:12 +00:00
Richard Moe Gustavsen
bcda398001 iOS: add native file dialog for selecing photos/assets
This will add a file dialog backend on iOS. The implementation
will check if a dialogs initial directory points to the system
picture location, and if so, present a UIImagePickerController.
Otherwise it will return false upon show, which causes
QFileDialog to use the widget based version as fallback.

Change-Id: I276b630911652b6d28f60763decc7ec38f00c817
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-02-15 11:11:59 +00:00
Richard Moe Gustavsen
66a61c7d2c iOS: add a file engine to support loading assets/photos
This patch will add a new file engine that lets the
app load images from the asset library using QFile.
The engine will recognize file names with the scheme
'assets-library', which is the same scheme returned
by UIImagePickerController.

This patch will be the first of a set of patches
that lets the user open a native image picker dialog
by using a QFileDialog with directory set to
QStandardPaths::PictureLocation. This patch will
ensure that the url returned from the dialog can
be loaded using QFile.

AssetsLibrary, which is used in this patch, is actually
deprecated in favor of the new Photos framework. But
since the latter is only supported from iOS8, we
choose to use the former framework for now.

Change-Id: If2a6eb394ae4df55fb4e9e1dc245a1574d38618a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-15 11:11:52 +00:00
Olivier Goffart
0b7ec36816 Add conversion between Q_ENUMs and strings in QVariant
Change-Id: I9264a68d162cf20db0167dd3f976a007477786d1
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-15 08:48:01 +00:00
Jani Heikkinen
2b75c156b6 Updated BSD licensed file headers
Change-Id: I6441ff931dbd33b698d762e6f6784898f3f60fe7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-15 07:41:17 +00:00
Thiago Macieira
f5b609cac8 Make the printing of complex byte arrays prettier
Similar to what we've done to QString, only we print each byte that is
not ASCII as \OOO (octal representation).

[ChangeLog][QtTest] QtTest now prints an escaped version of
QByteArrays that failed to compare with QCOMPARE, instead of the hex
dump.

Change-Id: I6a8c43f138c66c998280998a242b43cd579666a0
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-02-15 06:35:43 +00:00
Thiago Macieira
8d9d2a7b85 Optimize the Latin1 conversion code in the JSON parser with SSE2
This also reduces the number of variables modified in each loop from two
(l and i) to one (just i) and avoids calling str.length() all the
time. Those should be no-op changes, but why not help the optimizer?

Change-Id: I8895c35f84d545dba45bffff13bc4147ae53eaab
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-02-15 06:35:38 +00:00
Robin Burchell
dbd21d0879 QTextLayout: Reserve space ahead of time.
We know the size, so use it instead of allowing QVector to reallocate.

Change-Id: I2d18c30ef0d050326bb03c54da61459c40eb7af6
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-02-15 03:50:26 +00:00
Robin Burchell
ce86d73850 QFontDatabase: Move style key near usage to avoid heap allocs
Raises delegates_text.qml to 233 ops/frame

Change-Id: I88a26d2a9e4dc12ebbbc07329141976c194555ec
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-02-15 03:49:46 +00:00
Robin Burchell
5a23fcfa8a QFontDatabase: Optimize QtFontStyle::Key::Key().
Similar to 46b2c74eaf, skip the translations at
all costs. They allocate, and are very expensive. To ensure we try harder to
skip them, also avoid checking styles at all unless one has been provided.

This increases delegates_text from 209 items to 221 items for me.

Change-Id: Ia18b07de7b48cee356e9506a0c5d7129621d79d2
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-02-15 03:49:33 +00:00
Konstantin Ritt
071b286756 Fix indentation and move some variables around
Change-Id: Ice1987242d288b0b18e77c647153e6d133135896
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-02-15 03:01:40 +00:00
Kevron Rees
0eec8c86b6 QDBusConnection::registorObject with interface
Currently QDBus relies on a key in QMetaClassInfo to understand the DBus interface name.
This patch allows QDBus to also use a specified interface name in the registerObject call
instead of relying on QMetaClassInfo that might not be there (if the QObject was created
in QML or Javascript for example).

Change-Id: Ie02b2c67e7deb07f43e35eb166c11833fcbf38f3
Task-number: QTBUG-44074
Reviewed-by: Kevron Rees <kevron.m.rees@intel.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-15 02:17:53 +00:00
Thiago Macieira
a945124a42 Make the detection of the number of cores on Unix prettier
This is a no-op change. It doesn't improve or worsen the code at all.

Change-Id: Ifd5273842370ca9bce0ed74f2f2d54d453797948
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-15 01:30:53 +00:00
Thiago Macieira
d866f6e886 Save two system calls for setting a socket non-blocking on Linux
Linux's socket(2) system call can take SOCK_NONBLOCK and let us avoid
the extra two fcntl(2) to change the setting after it's created.

Change-Id: Ie0d7a2d51acc21acd850cbee6d0f76e27b1ae859
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-02-15 01:26:28 +00:00
Thiago Macieira
0fa7374f1d Ensure that the binary JSON objects are actually sorted
QJsonObject requires that, since it does binary searches for the keys.

Change-Id: I8a7a116f51864cecb52fffff13bc24660c1cc1ac
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-02-15 01:22:59 +00:00
Mikko Harju
06ecd74db1 Do not mark non-existent touch points as stationary
Make sure touches that were already released on an earlier
SYN_REPORT are not re-marked as TouchPointStationary.

This change has no effect on type A event processing since there
the contact state is never zeroed.

Change-Id: I2d4d705d2b3fae424b6245a75d4015dc2d86ad35
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2015-02-14 22:12:54 +00:00
Olivier Goffart
2be0d3088f qFormatLogMessage: optimize %{backtrace}
backtrace_symbols is very slow because it tries to find the function
name from the address. In order to do that it needs to do a linear search
over all symbols. (Because the hash table goes the other way to find the
address from the symbol name)

The code is going to skip a few frames from QtCore. Since we cannot know
how many, we take a few more than necessary.
This patch changes the additional number of frames from 15 to 7
(Usually, there are about 5 suppressed frames).

We call backtrace_symbols several times for only one frame at the time.
So we are not looking up addresses we don't need after we printed the
right number of frames.

Calling many times backtrace_symbols means we do more malloc, but that's
negligible compared to the time we save. We anyway do a lot of other
allocations because of the regexp operations and such

So this patch is then saving about 10 frames lookups which allow to print
about 6 qDebug per miliseconds instead of only 2 when using %{backtrace depth=2}

Change-Id: Ic6ece2145d53dc570c80fcb0e4455dcef6bc40cb
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-02-14 18:43:35 +00:00
Friedemann Kleint
e812358ba8 Animation classes: micro-optimize loops.
Don't use index-based iteration, but use iterators assigning
end() to a variable.

Change-Id: Ia87532349855fa3baa748b62224fc8adf3395dc0
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-14 16:24:40 +00:00