| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It's helpful to see how to choose among different solutions, right
after seeing short descriptions of all the solutions.
- Some minor rewording was done during the move
- The example about polling ports in a new thread was removed because
there are better ways to do that without threads.
Change-Id: I2cb571a4dbf9be93fb0ec88c60fb7406996c345b
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: I75e67ecb96423a3ebd82b32e6855378a73463fb7
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Also bring text closer to the style guide at
http://qt-project.org/wiki/CppDocumentationStyle
Change-Id: I30b1c36ac125a10c002efeb36978ced0d7a8f8bf
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In qatomic_cxx11, the 'Type' is std::atomic<T>, whose fetch_add method,
used in fetchAndAdd*(), already does the right thing for T* with sizeof(T) > 1.
The code, however, applied 'AddScale' to the 'valueToAdd', thus becoming
incompatible with normal pointer arithmetics.
This is very apparent when one goes to the length of actually testing
qatomic_cxx11 with tst_QAtomicPointer (which is non-trivial, since the
-c++11 configure option currently doesn't have an effect on tests/auto).
To fix, remove the AddScale factor.
Change-Id: I7507203af3b7df31d8322b31a6a1a33ca847d224
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The read from 'owner' for comparison with 'self' in QRecursiveMutexPrivate::lock()
is not synchronized with the write to 'owner' in the same function further down,
and neither operation is atomic.
Fix by making 'owner' an atomic pointer.
Change-Id: I186b88575589da0dce5827a1e17ceb4ce599ed02
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The existing code performed a downcast from QObject* to QAbstractAnimation*
at a time when the former QAbstractAnimation only is a QObject anymore.
The comment indicates that this was understood at the time of writing (or
else a little later), but it drew the wrong conclusions.
Statically downcasting a type whose dynamic type is (no longer) of the
target type is undefined behavior.
This change fixes the code to (implicitly) cast _up_ to QObject and
compare at that level.
Says Clang:
src/corelib/animation/qanimationgroup.cpp:278:33: runtime error:
downcast of address 0x000002966ab0 which does not point to an object of type 'QAbstractAnimation'
0x000002966ab0: note: object is of type 'QObject'
00 00 00 00 80 d7 e6 d7 88 2b 00 00 70 7b 96 02 00 00 00 00 61 00 6e 00 6e 00 6f 00 21 00 00 00
^~~~~~~~~~~~~~~~~~~~~~~
vptr for 'QObject'
Change-Id: I51d6277020d0ff32cd7b80a8cddcf2cda1a626a6
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ifcdf2df6adad7511730af3f24d4d4c82aa78e61f
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is done per the mailing list discussion at
http://www.mail-archive.com/development@qt-project.org/msg01603.html
Change-Id: I492b49553bc889892f5ca0c47aa13c75e11518e2
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
On the BlackBerry platform when an application is minimized an
alternate cover window is shown. This patch allows Qt to render
into those windows.
A new window type "Qt::CoverWindow" has been introduced.
Change-Id: If5e321f5cb00f6d3ed7a5dc0af425655d7a9253a
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I059580831ed29a53186272283aa7695c57539eed
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Found by tst_QLinkedList once compiled in C++11 mode.
Change-Id: Idbf79d775c5271437dbb99c1c8cc7a2e8a7f08bf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Merge most parts of the qlogger framework from
git://gitorious.org/qtplayground/qlogger.git
The categorized logging feature is a replacement for qDebug, qWarning and
friends. With logging statements in an app/library, a developer can
turn on the statements they care about and turn off the ones they don't.
Most work for this was done by Wolfgang Beck and Lincoln Ramsay.
Task-number: QTBUG-25694
Change-Id: Ib0cdfbbf3694f86ad9ec553b2ea36f09a477cded
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Move some of the static helper and private functions to better
organize the code. No code actually changed.
Change-Id: I6d5dd6bcb9fc5af56d2dbe9e53bc9f0a000c4fa4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Add new method to return if the current time is Daylight Time.
[ChangeLog][QtCore][QDateTime] Added new method isDaylightTime() to
return if the datetime is in Daylight Time or not.
Change-Id: Icb93fd5dd0b2f7d83d2d4643eeb12922c1137e3e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Change the datetime serialisation from using QDateTimePrivate::Spec to
using Qt::TimeSpec. Only public classes and enums are now used to
serialise, making the format safer..
Clean up the code to make each version clearer, this duplicates some
code but is easier to read and support.
Change-Id: I3d8fc05f50f8e8acb9edbb992e5ce06063654b8e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When Daylight Time transtion goes from Standard Time to Daylight Time
there is a "missing" hour, i.e. at 2am CET the clock goes forward to
3am. Currently QDateTime ignores this gap and considers the time to be
valid and able to be manipulated. This change respects the transition,
so any time set in the missing hour is considered invalid, and any date
maths returns valid results.
The validity in the current time zone needs to be checked every time
isValid() is called in case the system time zone has changed since the
last time it was checked. This is done by calling mktime to check the
returned result matches the expected result. This could be very
inefficient, but the returned offset value is cached each time so
mktime is not required to be called again within each method call,
effectively meaning mktime is called the same number of times by
each method. Note that this means any new methods added must be
careful to ensure either isValid() or refreshLocalTime() is called
first by any method needing to use the UTC value.
[ChangeLog][QtCore][QDateTime] The Standard Time to Daylight Time
transition for Qt::LocalTime is now handled correctly. Any date set
in the "missing" hour is now considered invalid. All date math results
that fall into the missing hour will be automatically adjusted to a
valid time in the following hour.
Change-Id: Ia652c8511b45df15f4917acf12403ec01a7f08e7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Change from storing the date and time as QDate and QTime to a serialised
msecs format. This format is a direct translation of the QDate and
QTime values, it is not the actual msecs since the Unix epoch. This
msecs format ensures we are always able to recreate the original QDate
and QTime values, but should still simplify the code and improve
performance.
Because we no longer store the explicit date and time we need to store
their isNull()/isValid() status separately.
The changes in storage results in the same memory footprint as before.
Note that this change does not optimize the code nor set out to fix the
known bugs, it only seeks to maintain the current behavior, although
some bugs are fixed implicitly. More bug fixes and optimizations will
follow.
[ChangeLog][Important Behavior Changes] The supported date range in
QDateTime has been reduced to about +/- 292 million years, the range
supported by the number of msecs since the Unix epoch of 1 Jan 1970
as stored in a qint64, and as able to be used in the
setMSecsSinceEpoch() and toMSecsSinceEpoch() methods.
Change-Id: I98804d8781909555d3313a3a7080eb8e70cb46ad
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
I didn't dig deeper to check where the additional reference came from,
but tracing confirmed that the QSharedDataPointer<QLocalePrivate>::detach()
call is gone with this change.
Background:
QString::vsprintf is used in the logging framework, and as such shouldn't
waste any memory. It's currently anyway unusable from, say, signal handlers,
but this is low-hanging fruit that shaves off one of the dozen or so
memory allocations involved in a simple qFatal() call.
Change-Id: I19fa2148f669dfc7b5f276221151e25a4348cbfe
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Avoid unsupported Win32 API while providing alternative codepaths for
in-package library loading.
Change-Id: Iaad059d6c94d0347cbaa8d9b9240806afcb29561
Done-with: Andrew Knight
Done-with: Kamil Trzcinski
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
As Windows Runtime does not really support the use
of spawning processes QT_NO_PROCESS is defined for
winrt builds and the corresponding sources are
excluded from build.
Change-Id: I79263417c985b23678c55ac44a5591a9a69d3c13
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: I1c9d6904eecd499ca8c2b744e8ac60696f40c20f
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
WinRT supports in-memory file mapping via CreateFileMappingFromApp. This
is unimplemented on Windows Phone.
Change-Id: Ic5692e501cd2fe9e1337829bdeb933fccc804abe
Done-with: Andrew Knight
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
As CreateSemaphore and WaitForSingleObject are
not supported on WinRT their supported alternatives
are used.
Change-Id: I1aa20076e286ed8ae28ba332bbed41ff8ce0feff
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Various global changes, primarily preprocessor flow, to support the
WinRT platform.
Change-Id: I3fa9cf91d5fb24019362e88fcf205e31b4f810b5
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This means the *Iterables and corresponding const_iterators need
to be exported.
Change-Id: Ic93283616bda96e0d7752b0e881bf0230a5c2146
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is a prerequisite for baseline support in Qt Quick Layouts
Change-Id: I1f032106cd1e7248a7688b6b9ca59f062a596d49
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It is not full paths being used, so switching to comma does not require
different environment variables per platform nor does it appear to be
platform dependent.
Change-Id: I219517d740fa7385e923a9e09cb7e241378f85ba
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: David Faure <david.faure@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When interfacing with Java API's on Android we need to write code using
the Java Native Interface (JNI). Writing JNI code requires a lot of
boilerplate code to be written. This patch contains API's to minimize the
amount of work needed to write JNI code.
QJNIEnvironmentPrivate:
On creation QJNIEnvironmentPrivate will attach the current running
thread to the Java VM, and expose the java environment.
QJNIObjectPrivate:
Wrapps around a Java class enabling the user to access the class from C++.
Change-Id: Ib633437ae36ff513d934292e9eeefcdd5b757d29
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
JNI_OnLoad is called for each library during the start-up of a Qt
application on Android. When the JNI_OnLoad is called we can get a
handle to the Java VM and necessary classes which enables us to access
Java API's in QtCore.
Change-Id: I64c1f1106cc0d5ab5a7bc9b22c752c09162fe813
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It apparently breaks users' applications.
Task-number: QTBUG-33487
Change-Id: Iaeceb3a02b5c7b9ab839c14693aaffcdf9394bc6
Reviewed-by: John Layt <jlayt@kde.org>
Reviewed-by: hjk <hjk121@nokiamail.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ib4f2197a0ab6bd41c91de667cd3087fb40e44097
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I04c87c4caeb96c820c4d332a803cb2824fea5891
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Similar to commit 8b062418 (MetaType: Fix operator{+,-}(int)
with the type-erased const_iterators., 2013-09-11), explicitly
create a copy of the iterator and intialise it.
Change-Id: I8b9edef40ca00c826f72768cba4a0992e55371f8
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
root(), leftNode() and rightNode() can be nullptr.
These pieces of code happened to work because the first thing lowerBound()
does is
Node *n = this;
// ...
while (n)
// ...
But that is _after_ dereferencing nullptr, which is undefined behavior.
So, check first, then deref.
This is the completion of I9137bf6e21014cd68404a7e49a748910b1d768cf:
all uses of root(), leftNode() and rightNode() have now been manually checked.
Change-Id: I3fcb958af9362104f94d6eea9c62da2ae07f1d5e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
root(), leftNode() and rightNode() can be nullptr.
These pieces of code happened to work because the first thing lowerBound()
does is
Node *n = this;
// ...
while (n)
// ...
But that is _after_ dereferencing nullptr, which is undefined behavior.
So, check first, then deref.
Change-Id: I9137bf6e21014cd68404a7e49a748910b1d768cf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ia137f75865390f4bbabd65c75ba81ac4bba93eba
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Both Clang and ICC complain about the use of those atomics when used
with a forward-declared pointee. GCC doesn't, which makes me think
it's a GCC bug.
When using QBasicAtomicPointer<Foo> with these atomics, the _q_value
member causes the instantiation of QAtomicOps<Foo>, which causes the
instantiation of the regular member function
QAtomicOps<Foo>::fetchAndAddRelaxed. The problem is that function
takes a QAtomicAdditiveType<Foo>::AdditiveT as parameter, which
requires sizeof(Foo). Clang 3.3 and ICC 14 correctly expand and
complain. GCC 4.7-4.9 apparently don't.
The fix is to apply the same trick we used for the other atomics:
change all ops functions (including fetchAndAddRelaxed) to be member
templates. That way, they can't be expanded until the actual use.
Clang errors:
qgenericatomic.h:73:33: error: invalid application of 'sizeof' to an incomplete type 'QMutexData'
qatomic_gcc.h:136:48: note: in instantiation of template class 'QAtomicAdditiveType<QMutexData *>' requested here
qbasicatomic.h:272:22: note: in instantiation of template class 'QAtomicOps<QMutexData *>' requested here
ICC errors:
qgenericatomic.h(73): error: incomplete type is not allowed
detected during:
instantiation of class "QAtomicAdditiveType<T *> [with T=QMutexData]" at line 111 of "qatomic_cxx11.h"
instantiation of class "QAtomicOps<T> [with T=QMutexData *]" at line 272 of "qbasicatomic.h"
Found-by: Tor Arne
Change-Id: I9b10648cd47109a943b34a4c9926d77cd0c4fe12
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Up to now, it was only possible to connect to functors in a direct
way, without being capable of using Qt::ConnectionType. This patch
allows for specifying a receiver for Functors and function
pointers, hence making it possible to specify effectively the
connection type.
To do this properly, it was needed to add an enum in FunctionPointer
representing whether the considered function is a member function
or not, to reduce ambiguity upon overloaded calls.
Moreover, now senders are checked for the existence of a slot obj
as well. This way, should the context be freed, the slot obj and
the functor contained in it will be freed as well.
On a side note, connecting to a static slot
(like QCoreApplication::quit) specifying the receiver object is
now compiling.
Change-Id: I46474099413b1dc6ca4db9934191d469baeef070
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I0c359e62a8cbf560691019187f316561bddbee52
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We don't have CoreServices on iOS, which hosts the UC* APIs.
Change-Id: I95b1b173e57665c2fc2cdc1701f8ad57cdc0e567
Reviewed-by: James Turner <james.turner@kdab.com>
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
As used by the upcoming iPhone 5S' A7 SoC.
Change-Id: I276dc739c2565bce23fb1a12c9470dcd311e67ba
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I8fbf1f8b0ebfdf58cd72c724326227dc1610e746
Reviewed-by: John Layt <jlayt@kde.org>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
For easy cross-platform and cross-device UIs, automatic asset swapping
based on filename is being developed. This API provides the logic for
the swapping, so that applications can use it themselves with the same
logic as any automatic swapping done in application templates.
Selector set is initially minimal, aiming for just platform selection
and enabling a common selection mechanism for Qt platforms to use.
Change-Id: I219517d740fa7385e923a9e09cb7e241378f857a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
|/ /
| |
| |
| |
| | |
Change-Id: Ibc2b1296bf7eb20e41c1af044797a9a026bed369
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
FORMAT_MESSAGE_ALLOCATE_BUFFER isn't available for WinRT
Change-Id: Ib9cf2a11a4e84f3ff010665bd53b4ffb0d0bfcce
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
|
| |
| |
| |
| |
| | |
Change-Id: Ic31fa667bdc746776d8e29564ea8a1ba6e7384f3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
After a bit of discussion, we should actually deprecate qBinaryFind too.
This puts the old code back (to avoid behavior changes / source
breaks).
This reverts commit 23d7f6ee5dea3dd9f47f4ab538b25dc0ffe3df92.
Task-number: QTBUG-33473
Change-Id: I7f7d25171e14061e51543c501c30a7b6b184a8fd
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Q_STATIC_ASSERT gives better error with C++11 enabled.
Aslo the qt_check_for_QOBJECT_macro had warning on some compiler since
it used null reference
Change-Id: Ic6115da800064b00c50a5762f0b79f5f656bf750
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On 64-bit platforms, with unaligned loads, this is defintely an
improvement since we can run fewer instructions. On 32-bit platforms
with unaligned loads, we'll do the exact same number of loads. On
platforms without unaligned loads, it's no worse.
Change-Id: Idd5dd5213975d77bbc3adf486adbf6f8ef071341
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For platforms where the CPU can do unaligned loads on its own, like
x86, the compiler will generate actual loads. On other CPUs, it will
do the byte-by-byte load like we were doing. The compiler cannot
generate worse code than our hand-rolled load, so this change can only
improve performance.
Change-Id: I32a89e64aa64d8af504be6c5a10b04d7573cdb98
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
|