First step to fix race condition about deleting QDBusPendingCallPrivate.
In a multithreaded application on a slow/single core cpu the following
race (and segmentation fault) can occur:
First thread A is running:
A: QDBusPendingReply<> reply = pi->asyncCallWithArgumentList(method, argumentList);
Then when the dbus answer arrives thread B will call:
B: QDBusConnectionPrivate::processFinishedCall()
B: ...
B: locker.unlock()
and runs until here, go on with thread A:
A: reply.waitForFinished();
A: QDBusPendingCallPrivate::waitForFinished()
A: {
A: QMutexLocker locker(&mutex);
A: if (replyMessage.type() != QDBusMessage::InvalidMessage)
A: return;
which returns immediately (mutex acquired, replyMessage alread set), now
reply goes out of scope (destructor called) and QDBusPendingCall::d's
destructor of type QExplicitlySharedDataPointer<QDBusPendingCallPrivate>
deletes the reference counted object QDBusPendingCallPrivate.
Now thread B continues, still in processFinishedCall()
B: if (call->watcherHelper)
B: call->watcherHelper->emitSignals(msg, call->sentMessage);
B:
B: if (msg.type() == QDBusMessage::ErrorMessage)
B: emit connection->callWithCallbackFailed(QDBusError(msg),
B: call->sentMessage);
accessing alread deleted object QDBusPendingCallPrivate via call->...
Fixed QDBusPendingCallPrivate deletion by proper reference counting
will be done in the next commit.
Task-number: QTBUG-27809
Change-Id: I15b3f0242471b62eaafadc763fb6a33339ff2fe1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
In QDBusConnectionPrivate::waitForFinished() pcall->pending was used
after the protection by pcall->mutex was released. A simultaneous
call to QDBusConnectionPrivate::processFinishedCall() was able
to reset pcall->pending to null before it was used for the
q_dbus_pending_call_block(pcall->pending) call.
Fixed by releasing (and setting to 0) of pcall->pending in
processFinishedCall() only in case no one is waiting yet, otherwise
release pcall->pending by the first thread waiting in waitForFinished().
There is still a race condition about deleting QDBusPendingCallPrivate
(too early) which will be fixed in the next two commits.
Task-number: QTBUG-27809
Change-Id: I040173810ad90653fe1bd1915f22d8dd70d47d8c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Halley's method to get a better approximation is omitted, if it
would include a devision by zero (INFINITY/NaN is worse).
Change-Id: Ida09326e2b5892d7cb21bcb956631c289e5b56ba
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
When readData() is called repeatedly, we need to keep track which
part of the multipart message we are currently reading from.
Hereby we also need to take the boundary size into account, and not
only the size of the multipart; otherwise we would skip a not
completely read part. This would then later lead to advancing the
read pointer by negative indexes and data loss.
Task-number: QTBUG-32534
Change-Id: Ibb6dff16adaf4ea67181d23d1d0c8459e33a0ed0
Reviewed-by: Jonathan Liu <net147@gmail.com>
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
On the Android Emulator, the shaders will be compiled by a desktop
GL driver, since the GL driver in the emulator is just a thin
wrapper. The GL driver does not necessarily support the precision
qualifiers, which can cause applications to break. We detect this
at runtime in the platform plugin and set a workaround flag to
Task-number: QTBUG-32557
Change-Id: Ied00cfe8e804d1f7862697dd379a14f3bed3d980
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Before this patch we always send mouse events for each
touch event that happens.
This is redundant (we already synthesize in
QGuiApplicatioin) and breaks some touch handling
in QtQuick2.
Change-Id: I4bc1686a7a46039901315619a0acdf2888ad6775
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
The fill color was not correctly converted before being filled into
RGBA8888 images. This patch adds a function with convertion and
adds tests for it to tst_qpainter.
Change-Id: If8b0e6db38b2794a60301842e25f377eb7216796
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
On Android, when not using Ministro, we cannot read certificates
from the file system, so we have to get them through Java APIs instead.
Change-Id: I415329fcb45836735c1112dbe832214b3c73dc9a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
This patch now also copies the state of the QPainter returned from
QPaintEngine::painter for the first page of a print preview, as it is
done for all other pages of a preview in QPreviewPaintEngine::newPage().
Task-number: QTBUG-30621
Change-Id: I50001231c4006b9627ff80504618cbe0fa6d9f65
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
The Qt Quick demo Tweet Search works again, add it back as
one of the highlighted examples.
Task-number: QTBUG-31745
Change-Id: I4fc7d1a836159e9bb54fcd9e1a9c2760d97aa80a
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
We're rolling back exception safety support
Task-number: QTBUG-32642
Change-Id: I25f20b554a93f25d00cca19b3e308d6cc8fe85e2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It makes sense for a QScopedPointer to be movable, for instance
for allowing instances to be returned from a function.
Ownwership of the managed pointer is still tied to one (and one only)
QScopedPointer instance.
Moreover, a move assignment operator makes sense as well, as it
implementing the equivalent of
this->reset(other.take());
only when other is a rvalue and not a lvalue (so either it's a temporary
or it's getting explicitly moved in with std::move).
This makes QScopedPointer API's a bit closer to std::unique_ptr's one.
Task-number: QTBUG-29754
Change-Id: If1ac0c688327a67af4ad5b7ad45b439b022ed1c6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
I.e. do not try to load file names that are not there anyhow. The
code would search for libcrypto.so.1.0.0 and libssl.so.1.0.0, while
on QNX the libs are called libcrypto.so and libssl.so, and there
are no symlinks with version numbers.
This saves ~ 45 ms in real apps (tested with Facebook, Twitter and
Foursquare), and ~ 24 ms at app startup in an isolated app without
GUI (difference maybe because threads are fighting for CPU or so).
Task-number: QTBUG-32548
Change-Id: I25869538bbfa3c2848541415e8361e0bd7a8fd50
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Several QOpenGLContext methods fails incorrectly on QWindows from EGL or
MinimalEGL. This is happens because they are incorrectly marked as raster
surfaces instead of OpenGL surfaces.
Change-Id: Ic9b3859915a9049fce442216b01dce89521fa5ee
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Tests are passing nowaways on OS X.
Task-number: QTBUG-27890
Change-Id: I6a0a881ece844ef931cb8af51b58d33c40be4d2c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
The c_rehash'ed symlinks are always there on QNX, so no need to check
at every app start for the feature. This saves ~ 17ms at each app
start.
Task-number: QTBUG-32549
Change-Id: Ia9df60aba9d1bd70868b7004b847867a2128f600
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Add parsing for the window geometry specification to
QGuiApplicationPrivate. Enable the argument under a different
name for the other platforms as well.
Task-number: QTBUG-27349
Change-Id: I973b2c69f5172f7d0bc983b8ba4b0d164649ef02
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
When qdoc traverses its internal node tree to generate
either the html docs or the help file, it no longer
traverses nodes that were added to the tree as the result
of reading an index file.
Task-number: QTBUG-32622
Change-Id: Iac63ac2ce177b15b85a2aa73850c45891cbbc624
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Added full path to src dir for testdata.
Task-number: QTBUG-32535
Change-Id: I38e96216e9a016869151adf0ae995e068b8b5354
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
Added full path to src dir for testdata.
Task-number: QTBUG-32536
Change-Id: I5ef215d451a6407c277d2c98f21ffc35a8657e28
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
If some of the X11 requests fail, QXcbXSettings::QXcbXSettings() prints a
warning and returns. These error paths all caused memory leaks.
Change-Id: Idfecf03dd412c35552c3bbbebdda9c039aeadc13
Signed-off-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Laszlo Papp <lpapp@kde.org>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
This option is required to build qtmultimedia without
Windows Media Foundation backend. In this case,
a full DirectShow backend will be build instead.
Change-Id: Ib29ba81ca6cbb00b609cc97fab7da29e61d31d6d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
Now arm specific -mfloat-abi flag is added to compiler flags
only for arm architecture in linux_arm_device_post.conf.
Change-Id: Ie77ac6e0717d9d1fd9c14e1d6a26e86f08ab418c
Reviewed-by: Jarosław Staniek <staniek@kde.org>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
QDateTime can now be converted to strings compliant to RFC 2822.
Additionally, it supports RFC 850 and RFC 1036 during parsing.
By having them all together, all type of dates found in exchanged
messages on the internet (including USENET) get supported.
Change-Id: I771066c23f409d20b31b7d802f37852ea68ca2a0
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Socket notifiers that are registered with BPS are disabled by a call to
select. This solves the echoTest2 test case of QProcess.
Change-Id: Ic7f3f14433477b89eaad5ffbeb6c22a1b5c2e910
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Qt::HANDLE is always defined as 'void *' on Qt 5.0
Task-number: QTBUG-32469
Change-Id: I3f0f2b19e65d54c88604e1cb65b5791c456b3003
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Change-Id: I68d087b15839418008db5bf1c0c76ca303245519
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
The $$path may already be absolute, so prepending a slash may
result in //usr/lib, for example.
Task-number: QTBUG-32570
Change-Id: If7a4f6fbec0216404cfe48c1da62d21d75b3e272
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Support the byte-ordered RGBA format which is used by OpenGL, and many
endian neutral byte formats.
Task-number: QTBUG-32201
Change-Id: I77cffb4c30c69545fa96ded2f537b2ebd9351acb
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
the built host tool may need to know what the target architecture is,
e.g. mkv8snapshot does.
Change-Id: Ie5b1f6a07fa082d212e7c5b54289de49fd74dbcf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-edited style convention for readability (as opposed to file size)
-removed extra CSS rule which does nothing
Change-Id: Ica9cbdf0c63bae87a8446afcbc22f74403e3247e
Reviewed-by: Martin Smith <martin.smith@digia.com>