Commit Graph

26753 Commits

Author SHA1 Message Date
Laszlo Agocs
1172e18c3c Promote backingstore image format to alpha
Like xcb does since 1bcfc3de75.
For TranslucentBackground (ARGB32_Premultiplied) there is no change
in practice. For RGB32 we will promote to ARGB32_Premultiplied
but everything should behave like before, except that we do not rely
on undefined behavior anymore when QOpenGL/QuickWidget is in use. For
RGB16 this will enable QOpenGL/QuickWidget since there the hole
punching mechanism needs an alpha channel always.

Change-Id: Id04ea548cee245ec91642f1358a5e501b62ff64c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
2016-01-17 01:31:55 +00:00
Swen Kooij
5eec43a44f qdbuscpp2xml: Fixed wrong filename being reported in messages
This caused the filename in messages to be one of the other arguments
that were specified instead of the actual filename.

Caused by the fact that mutations are possibly made to `args` in
`parseCmdLine` and thus the amount of items in `args` does not always
match the amount of items in `argv`.

Change-Id: Ief3716dde39dfdc949a5192e7f83d93cf90130f0
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-16 22:11:27 +00:00
BogDan Vatra
9bb24615ad Android: fix native libs dir.
On Andorid 64 bit O.S.s the libs are not located anymore on dataDir/lib/
but they are located on dataDir/lib/<arch>/. Using nativeLibraryDir instead
of dataDir we'll get the right folder.

Change-Id: I40ef9513eb5b51f81032bd41f9943ab7b959ad51
Task-number: QTBUG-50394
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2016-01-16 08:52:56 +00:00
Friedemann Kleint
c26562033b QFileDialog: Check whether sizeHint() is valid before resizing.
Fixes a regression appearing in 5.5 where QtWidgets-based file dialogs
showed up too small on Windows.

Change-Id: I5f74ab01d4368d67ab79d3a1b145fb63bdd69ca0
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-01-15 22:34:43 +00:00
Marc Mutz
1a84e55b8f QtCore: replace uses of inefficient QList<QPair>s with QVectors [itemmodels]
These QPairs are larger than a void*, so holding them in QLists
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.

Fix by holding them in QVector instead.

Change-Id: Ie8d8eff3448ada7aef5dfba7fc701a59821f5b54
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-15 21:49:14 +00:00
Allan Sandfeld Jensen
8fd75739ef Lock qfontdatabase mutex in qt_fallbacksForFamily
When called from outside of qfontdatabase, the qfontdatabase mutex will
not be locked upon entry to qt_fallbacksForFamily, so we need to add
it to the exported version.

Change-Id: I16a21708d7cca15730c12de3dbeeaab13ffbd315
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2016-01-15 19:22:45 +00:00
Alex Trotsenko
982656351b QAbstractSocket: remove redundant handling of recursive calls
Recursion is alredy prevented by the emittedReadyRead member.
Disabling the read notifications also occurs when:

  - a new chunk of data has arrived on an unbuffered socket;
  - the buffer size limit has been reached on a buffered socket;
  - pauseSocketNotifiers() has been called

Subsequent calls to read() or resumeSocketNotifiers() should re-enable
the notifications independently from possible nesting.

Change-Id: I4587265b8d3ed137516e08fbe92dce2f5eab508c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
2016-01-15 18:24:13 +00:00
BogDan Vatra
e666ce162b Helper function needed to run Runnables on Android UI thread easily.
Add a function to allow the users to easily run asynchronously Runnables for any thread
directly on Andoroid UI thread.

Change-Id: I631bf8a2c602e038039fec621ec01272af20a400
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2016-01-15 16:13:29 +00:00
André Klitzing
5ef14c52d0 Fix QFileSelector::select if called with QUrl and scheme "assets"
QFileSelector::select(QUrl) will use ":" for scheme "qrc" to
call QFileSelector::select(QString). Scheme "assets" needs
to remain "assets:" for select(QString), otherwise it won't
recognize the file in "assets".

Following failed because it was passed as ":/qml/example.qml"
to select(QString):
    select(QUrl("assets:/qml/example.qml"));

This will call select(QString) to:
    select("assets:/qml/example.qml");

Change-Id: I6bdeed6bb67992498ae3b8e1273c20e70049381a
Task-number: QTBUG-50435
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-01-15 13:30:37 +00:00
Jani Heikkinen
1a88b2f768 Updated license headers
From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

Updated license headers to use new LGPL header instead of LGPL21 one
(in those files which will be under LGPL v3)

Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-15 12:25:24 +00:00
Allan Sandfeld Jensen
4f71654385 Handle RGB30 formats in OpenGL backing-store integration
Optimizes composition on platforms that may use 10-bit per color channel
formats.

Change-Id: Ib303c391d47795c79a4ba55d78dbb1c3c702d90a
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-01-15 08:59:28 +00:00
Thiago Macieira
434302eae1 Fix non-Latin1 strings in QJsonDocument on big-endian platforms
QJsonDocument stores the entire JSON tree in its binary format. Since
the binary format is the same on-disk as in-memory, it has a fixed
endianness. But when converting from QString to the little-endian
format, the code accidentally converted twice (from little endian, to
little endian), which resulted in a no-op and the string got stored as
big-endian.

It's like encrypting with double-ROT13.

No new testcase because tst_QtJson::removeNonLatinKey was already
failing and gets fixed by this commit.

Task-number: QTBUG-50419
Change-Id: I408dcb81ba654c929f25ffff1428cc79472bbe13
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-15 06:38:53 +00:00
Thiago Macieira
d53f614740 Doc: add missing semi-colon
Change-Id: I408dcb81ba654c929f25ffff14291c57198e7367
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-01-15 06:38:50 +00:00
Jani Heikkinen
71404b0be1 Add new license header templates and license files
From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/

Added new header templates and corresponding license files. Unnecessary
ones will be removed later when license header change is done to all
Qt modules

Change-Id: I8c482d81e40c03f0c6395e437f55527617aa6b58
Reviewed-by: Tuukka Turunen <tuukka.turunen@theqtcompany.com>
Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-14 20:43:46 +00:00
Friedemann Kleint
b6c086ad6c Windows/Direct2D QPA plugins: Fix overrides.
Fix warnings found by clang.

Change-Id: Ia8e7a271e9d33011eded1e63e61dbcaeaf692600
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-01-14 16:57:59 +00:00
Allan Sandfeld Jensen
0bc4288689 Optimize OpenGL binding of ARGB32PM backing store
Detect premultiplied backing store and upload it without conversion
and adjust blend to not multiply alpha again.

Task-number: QTBUG-50381
Change-Id: I51939c4f82fbb0c48eaca6e2475bf4cf3722bc2d
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2016-01-14 13:28:57 +00:00
Anton Kudryavtsev
f1b796e3ba QHttpNetworkRequestPrivate: perform init by init-list in ctor
Change-Id: I2a8ced0eff726911daa71eb11e135f69612a9090
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-14 12:49:49 +00:00
Marc Mutz
ed45af5f3c QXcbXSettings: don't construct a QByteArray just to append it
... use QByteArray::append(char*,int) instead.

Also cache the return value of the out-of-line function
xcb_get_property_value_length().

Saves ~120b in text size, and a heap allocation.

Change-Id: I4d1deafdcd3345f2b7dfbf8c45702cfee733a269
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-14 12:48:16 +00:00
Marc Mutz
a836b4735c QXcbXSettings: replace a QLinkedList with a std::vector
Required to change an erase() loop into std::remove_if to
avoid running into quadratic behavior.

While at it, made QXcbXSettingsCallback a proper struct,
used aggregate initialization, and ported another loop to
C++11 range-for.

Saves ~0.5KiB in text size on optimized GCC 5.3 Linux AMD64
builds, and a lot of heap allocations.

Change-Id: I228bb853519ed2590375dc511e527f47bb8daa34
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-14 12:48:10 +00:00
Błażej Szczygieł
18119a58de xcb: Don't clear alpha on every repaint
Since 1bcfc3de75 every image has alpha
in XCB even if it is not used by window. This patch prevents clearing
the alpha channel on every repaint when window is not transparent.

Change-Id: Icfdd39f8636401906ace77ea3c2fa25386979d5f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
2016-01-14 10:47:10 +00:00
Maurice Kalinowski
c3376ed3f9 winrt: enable hardware buttons for Windows 10
Previously the hardware and camera button handler were guarded inside a
Q_OS_WINPHONE which does not apply to Windows 10.

Instead use WINAPI_PARTITION_FAMILY like on other places, this covers
Windows Phone 8.1 as well as Windows 10.

To find windows.phone.ui.input.h at build time the Mobile Extension
directory needs to be added to the include paths inside qmake. On
runtime we need to check whether we have hardware buttons or not. In
case they exist, register the handlers, otherwise skip registration.
Skipping also helps to keep WACK succeeding.

Task-number: QTBUG-50427
Change-Id: Ibeae15dbde12553cebd2b73b1a40b754c014f426
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-01-14 07:43:26 +00:00
Anton Kudryavtsev
fb1863e64a QPathSegments: set pathId to zero in ctor
Change-Id: Iaa4349914fbeca9c64863addb9892412e1bad65b
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2016-01-14 05:25:20 +00:00
André Klitzing
f831c97a08 Replace QStringLiteral with QLatin1String in QFileSelector
Change-Id: I5c109d26bf5252947ae016465db5675e38cd68c9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-13 22:06:32 +00:00
Volker Krause
b5447f9c33 QtConcurrent: Avoid an allocation in ExceptionHolder if there is no exception to store.
Qt3D hits this several times per frame.

Change-Id: Iaadcfbe79f146bd73b36f01325580dc24a10225c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-13 22:06:25 +00:00
Błażej Szczygieł
7b63c45df5 QtWidgets: Don't show window of native widget with WA_OutsideWSRange
This patch prevents visibility of native widgets which for some reasons
has width or height of 0.

Due to async expose event in Qt5 we must force "hide_sys()" during
resizing for widgets with WA_OutsideWSRange flag. This avoid problems
for non-native and visible widgets which are converted to native and
then resized:
child->winId();
child->resize(0, 0);

Task-number: QTBUG-49445
Change-Id: Ied62a4f253f89447941b2dc03316db8c168f4bb5
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
2016-01-13 19:02:34 +00:00
Błażej Szczygieł
a9c0a83207 xcb: Don't duplicate expose events
Use ExposeCompressor for mapping the window to prevent duplicating
expose event when window is mapped.
Remove sending expose event from configure notivy event.

Change-Id: I6836c06047ffebd65775aa8aca90750afba6efe8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-01-13 19:02:29 +00:00
Alex Trotsenko
184d66caa5 QDataStream: handle incomplete reads from QIODevice
This adds a way to resume reading from a stream after a ReadPastEnd error.
This is done by introducing a stream read transaction mechanism that keeps
read data in an internal buffer and rolls it back on failure.

[ChangeLog][QtCore] Added QDataStream startTransaction(),
commitTransaction(), rollbackTransaction(), abortTransaction()
functions to support read transactions.

Task-number: QTBUG-44418
Change-Id: Ibf946e1939a5573c4182fea7e26608947218c2d9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-13 16:31:33 +00:00
Oswald Buddenhagen
ca6f11dcf2 write all properties to qt.conf when -external-hostbindir is used
the presence of a [Paths] section causes QLibraryInfo to derive all
property values according to the Qt default directory layout,
disregarding the compiled-in paths from configure. consequently, we need
to write them all to qt.conf as well.

Change-Id: I3558e9aef1fce956812ea91e216f53bf7934c285
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2016-01-13 16:19:43 +00:00
Oswald Buddenhagen
c8ae9bf58d write [Paths] to qt.conf only if -external-hostbindir is used
there is no point in overriding the built-in defaults with the same
values.

Change-Id: I24f66b86f751f7044625b5256f3d979ece782cf7
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2016-01-13 16:19:39 +00:00
Oswald Buddenhagen
b8bee40726 unbreak propagation of dependencies on private modules
most module project files define two logical modules: a public one and
the corresponding private one. these are really separate modules as far
as qmake is concerned (even though the private one contains just
headers), and consequently have separate dependencies - QT and
QT_FOR_PRIVATE.

as public modules cannot depend on private ones, all private
dependencies would have to go to QT_FOR_PRIVATE, and a dependency on the
respective public module would have to be added to QT. this would be a
bit tedious, so we have a convenience feature which allows putting
private dependencies into QT, but automatically "downgrades" them to
their public counterpart when creating the public module's .pri file.

however, we failed to put verbatim versions of these private
dependencies into the private modules, which meant that these
dependencies were not pulled in transitively by the private modules'
users.

note that this entirely unrelated to QT_PRIVATE - this one defines the
private (non-propagated) dependencies of the module's implementation,
i.e., the libraries (and headers) that are not part of the link
interface. there is no QT_PRIVATE_FOR_PRIVATE, because there is
obviously no point in assigning the dependencies to a particular
logical submodule when neither one inherits them as far as the qt
module system is concerned.

Change-Id: Ib056b47dde3341ef9a52ffff13efaf8ef8e6817b
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-13 15:59:05 +00:00
Oswald Buddenhagen
dc1f65d4cf make module .pri files more flexible
save the actual library/framework name and framework paths in the .pri
file instead of computing them again at use time in qt.prf.

qt_no_framework_direct_includes inherently requires a use-time decision,
so this ugliness remains.

Change-Id: I09b2775e7d8e1d52e3af0d663e1babde10ae4814
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-13 15:59:00 +00:00
Edward Welbourne
cd9625fc3c Correct floordiv() to cope with implementation-defined division.
Irrelevant once we get to C++11 (so we can revert this in 5.7), but
division's rounding direction is implementation defined when either
operand is negative [0].  The prior code assumed C++11's truncation
(a.k.a. round towards zero), but rounding may be downwards instead.

[0] http://en.cppreference.com/w/cpp/language/operator_arithmetic#Multiplicative_operators

Change-Id: I2b6b27e1cf629def48b25433e81b9ed8230d8795
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-13 13:58:49 +00:00
Morten Johan Sørvig
eef7725775 eglfs: Round value returned from pixelDensity()
Avoid returning fractional scale factors, which we
do not support. This matches the pixelDensity()
implementation for the Xcb and Windows platform plugins.

Change-Id: I79156e802a0a436b9344f12d35d1f4861e20e7fa
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
2016-01-13 12:55:15 +00:00
Andy Shaw
8c89a8b1ef [Android]: Java uses some deprecated locale codes so account for these
There are three deprecated language codes that Java still uses for the
locale so we need to account for these inside QLocale by mapping them to
the right language.

Task-number: QTBUG-49632
Change-Id: Ib66b3f2763e085f7384228f2490b048bb56be259
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-13 12:37:56 +00:00
Erik Verbruggen
6ffa3696e0 ARMv8: Update qHash for strings to use the CRC32 instruction
Same as the SSE4.2 implementation: use the (optional) ARMv8 crc32[bhwd]
instruction to calculate hashes for strings. For Aarch64, support for
the instruction is dynamically detected. For a 32bit ARM binary, dynamic
detection is only done when the compiler is explicitly told to target
ARMv8. When telling the compiler to target an other/older version, the
crc32 code is not compiled.

Change-Id: I51ebc1a4545dede4988247e75043f29a64c2a6c5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-13 09:05:06 +00:00
Erik Verbruggen
4417458d62 ARMv8: add crc32 feature detection.
Change-Id: I3cfac90dfa137d0bf3d124d87262eb2dbb56459c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-13 09:05:01 +00:00
Simon Hausmann
9a969182cf Merge "Merge remote-tracking branch 'origin/5.6' into dev" into refs/staging/dev 2016-01-13 07:19:44 +00:00
Dan Cape
f7020a31c0 Add ability to specify precision of float/double currency strings
Added a new overload function that allows the developer to
specify the desired precision. Until 6.0, it will require
the symbol and precision to be passed to it. Once Qt is at
version 6.0, it will replace the overload function that
requires a value and optionally a symbol.

[ChangeLog][QtCore][QLocale] Added an overload for toCurrencyString()
that allows the decimal precision to be specified.

Change-Id: I1fb7dde3583f46de2ed20ec2a7abaeca23a903ef
Task-number: QTBUG-46595
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-13 06:35:14 +00:00
Marc Mutz
61169b72c2 Fix UB in QIODevicePrivate
Passing nullptr as the second argument of memcpy/memmove
constitutes undefined behavior, even if the length argument
is zero at the same time.

Fix by protecting mem{cpy,move,chr} from nullptrs.

Found by UBSan:
  qtbase/src/corelib/io/qiodevice_p.h:105:33: runtime error: null pointer passed as argument 2, which is declared to never be null
  qtbase/src/corelib/io/qiodevice_p.h:175:53: runtime error: null pointer passed as argument 2, which is declared to never be null

Change-Id: I979158b0a74169ca4eb459928398ebc40f77dfb5
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-13 05:42:35 +00:00
Sérgio Martins
e770728a33 Add Qt6 TODO to remove copy-assign operator and copy-ctor
Change-Id: I5d80b272f31ada58d4eb7c19051fe447d6241633
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-12 23:52:35 +00:00
Tor Arne Vestbø
1e15b428b5 Fix shortcut modifiers not being propagated after c7e5e1d9e
The code-path used by non-OSX platforms were not passing on the native
scan-code, virtual key, and modifiers, breaking QKeyMapper::possibleKeys
in the process.

Task-number: QTBUG-50360
Change-Id: Idc36380a234f0a37d016dbeaca594aeb82c496d2
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
2016-01-12 22:08:09 +00:00
Tor Arne Vestbø
af45b352d7 Fix reentrancy regression in QShortcutMap after c7e5e1d9e
When closing a popup dialog using a shortcut, when the popup
was originally opened using a shortcut, the closing-shortcut
would interfere with the state of the first shortcut, and we
ended up sending a key event for the original shortcut.

Task-number: QTBUG-50360
Change-Id: I62e5ddb9ca43b28519ede629775bc0d7598dccc4
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2016-01-12 22:08:04 +00:00
Marc Mutz
68e915c623 QStaticTextItem: use smart pointer members
... so we can drop the user-defined copy special member
functions and the destructor.

As a side-effect, enables the move special member functions,
which were previously inhibited by the presence of the
now-removed functions, and makes the copy constructor safe
for self-assignment.

Change-Id: I430f83a6a08b1f5ee94b52f52e4d80fa1139d1c1
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-12 22:01:28 +00:00
Thiago Macieira
70092c9a47 Fix GCC 6 warning about placement-new operator on too little space
GCC 6 is able to detect when you use a placement new of an object in a
space that is too small to contain it.

qvariant_p.h: In instantiation of ‘void v_construct(QVariant::Private*, const T&) [with T = QRectF]’:
qvariant_p.h:142:9: error: placement new constructing an object of type ‘QRectF’ and size ‘32’ in a region of type ‘void*’ and size ‘8’ [-Werror=placement-new]
         new (&x->data.ptr) T(t);
         ^~~~~~~~~~~~~~~~~~~~~~~

This happens even for the false branch of a constant expression (the
enum). So split the v_construct function in two pairs, one pair for
being able to use the internal space and one pair not so.

Change-Id: Ibc83b9f7e3bc4962ae35ffff1425ed898f279dea
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-01-12 19:25:42 +00:00
Thiago Macieira
9f09fed72f QVariant: use v_construct instead of duplicating logic
v_construct does what we want, so use it. This is required for the next
commit, which solves a GCC 6 warning issue.

Change-Id: Ibc83b9f7e3bc4962ae35ffff1425ed5f035f631a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-01-12 19:25:29 +00:00
Thiago Macieira
5e1a5a78d9 QVariant: make sure to default-initialize in v_construct
Otherwise it's possible to get garbage for primitive types (trivially
constructible) under some conditions.

Change-Id: I408dcb81ba654c929f25ffff142885fc62395948
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-12 19:25:07 +00:00
Alex Trotsenko
771220ebc8 Allow to use QRingBuffer in containers
Make a private member mutable to enable default assignment operator.

Change-Id: I1216875c186ed800e07c6b41a5bae18c3b71b2fa
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-12 18:03:24 +00:00
Alex Trotsenko
7d257aab81 QIODevice: handle incomplete reads
Introduce a transaction mechanism that gives the ability to read the
data atomically. Current implementation supports transactions for both
types of devices. For sequential devices, it records the whole input
stream during transaction. For random-access devices, device position
is saved when transaction starts. If an error occurs, the application
may be able to recover the input stream by rolling back to the start
point.

Also, QIODevice::peek() was rewritten to make use of transactions
internally. The replacement of QIODevicePrivateLinearBuffer by
QRingBuffer is closely entangled with that, which makes it unfeasible
to do separately.

Bump the TypeInformationVersion field in qtHookData, to notify the
Qt Creator developers that the offset of QFilePrivate::fileName was
changed and dumpers should be adapted.

[ChangeLog][QtCore] Added QIODevice's startTransaction(),
commitTransaction(), rollbackTransaction(), isTransactionStarted()
functions to support the read transactions.

Task-number: QTBUG-44418
Change-Id: I3564b343ebeeaaf7c48a1dcdb7ef0a7ffec550f2
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-12 18:00:58 +00:00
Anton Kudryavtsev
98cea2b6c4 qtcore_eval: fix dead code after return statement
Change-Id: Ic4be53d64e08a60149e3a4d9a2ac10c5d45b4f34
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-12 17:11:56 +00:00
Anton Kudryavtsev
6c91ed244e QFileSystemEngine: fix duplicate flag in OR expression
Change-Id: Ib4df3ca1cff2ff2cd09515b94e63741a32b2580b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-12 17:11:36 +00:00