summaryrefslogtreecommitdiffstats
path: root/src/dbus
Commit message (Collapse)AuthorAgeFilesLines
* Merge two more QDBusConnectionPrivate members into a unionThiago Macieira2015-09-152-15/+18
| | | | | | | | | | | QDBusConnectionPrivate can only be a client or a server, not both, so the DBusServer and DBusConnection pointers can be shared, like the QDBusConnectionInterface and QDBusServer pointers in the other anonymous union. Change-Id: I9a75ad8521ae4e5cbbe5ffff13d1baa8ab83c42f Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Make sure we don't deadlock when connecting signalsThiago Macieira2015-09-153-51/+40
| | | | | | | | | | | | This commit moves the code that finishes the signal-slot connection into the QtDBus auxiliary thread. That is necessary because we're holding the lock for writing while making blocking calls. The auxiliary thread might be waiting for us to release that lock while processing some previous message. Change-Id: Iee8cbc07c4434ce9b560ffff13d0521b94a51833 Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Bypass connectSignal() for receiving the NameOwnerChanged signalThiago Macieira2015-09-151-6/+17
| | | | | | | | | | | | | | | | | This is an optimization but is required. Instead of going through the entire (dis)connectSignal() stack to add/remove matching rules for the NameOwnerChanged bus signal and call into our serviceOwnerChangedNoLock slot, create a static hook that will match the signal and simply add/ remove the rules as needed. The required part is that this avoids a recursion into connectSignal(). The next commit will move this code to the QtDBus manager thread and we won't be able to call connectSignal() from there (it would create a deadlock). Change-Id: Iee8cbc07c4434ce9b560ffff13d074ce90ad02d4 Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Make QDBusConnectionPrivate::getNameOwnerNoCache work in our threadThiago Macieira2015-09-151-3/+15
| | | | | | | | | | | | | | | In two commits, we will attempt to call this function from the manager thread, so we need to be sure this function works from there. Right now, it would deadlock in QDBusPendingCallPrivate::waitForFinished(), inside QDBusConnectionPrivate::sendWithReply(). The solution is simple: expand sendWithReply to the sendWithReplyAsync function it calls anyway, but tell the internal DBusPendingCall to finish before we call waitForFinished(). Change-Id: Iee8cbc07c4434ce9b560ffff13d0749013d771ab Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Use the new QDBusConnectionPrivate::shouldWatchService functionThiago Macieira2015-09-151-3/+1
| | | | | | | | | That function was added in the previous commit, so deduplicate the code from QDBusAbstractInterfacePrivate::initOwnerTracking(). Change-Id: Iee8cbc07c4434ce9b560ffff13d06f1d9fb0cde5 Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* QDBusServiceWatcher: Move the logic to QDBusConnectionPrivateThiago Macieira2015-09-154-37/+80
| | | | | | | | | | | With kdbus, we won't have a regular signal, but instead a special message. So keep the logic of what to do in QDBusConnectionPrivate. The #ifdef is to make sure the bootstrapped qdbuscpp2xml continues to build in cross-compilation environments. Change-Id: Iee8cbc07c4434ce9b560ffff13d06f0d9904cb6d Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Remove the event callbacks in QDBusConnectionPrivateThiago Macieira2015-09-153-149/+19
| | | | | | | | | | | | | | | | | | | | | They were used when we called the libdbus-1 message-sending functions from any thread, which meant that the callbacks could be triggered on any thread. Since we moved the message-sending to one thread only (the manager's thread), there's no need for the event fallback anymore. Since they're also always[*] running on an aux thread, there's no point in checking for the presence of a QCoreApplication instance anymore. I don't think there has been a need for this for many years, as the event dispatcher has been decoupled from QCoreApplication for a long time. [*] exception: the callbacks are first called in the thread that invoked QDBusConnection::connectTo{Bus,Peer}, before we've done the moveToThread. Task-number: QTBUG-43585 Change-Id: Ic5d393bfd36e48a193fcffff13b73758c798d6b0 Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Merge two Q_GLOBAL_STATICS into another and solve memory leakThiago Macieira2015-09-153-26/+30
| | | | | | | | | | | | | | | | | | | | | | | The two global statics for the session and system buses aren't necessary if they can't outlive the global static for QDBusConnectionManager anyway. So merge them there. The extra mutex is necessary because the QDBusConnection::connectToBus function will lock the regular mutex. This solves a potential memory leak at exit as a side-effect. Before this change, the session and system QDBusConnection object got destroyed in the main thread during global destruction, so it had to post an event to the QDBusConnectionManager thread to finish the destruction of the private. However, QCoreApplication is already gone by this point, so the QEvent::DeferredDelete event never got delivered. After this commit, there's no global static to destroy the QDBusConnection (there is no QDBusConnection holding a reference), so the object gets destroyed in QDBusConnectionManager::run()'s cleanup code. Change-Id: I9a75ad8521ae4e5cbbe5ffff13d1b967ee1a7a7e Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* And move the creation of connections to the threadThiago Macieira2015-09-156-95/+142
| | | | | | | | | | Now we know that all timers and socket notifiers get created only in the QDBusConnectionManager thread. Incidentally, this reduced code duplication. Change-Id: I27eaacb532114dd188c4ffff13d5075a8d2efb0b Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* And move the sending of other types of D-Bus messages to the threadThiago Macieira2015-09-153-12/+15
| | | | | | | | | | With this, we now know that all messages sent are sent from the same thread. This simplifies greatly the handling of the socket. Task-number: QTBUG-43585 Change-Id: Ic5d393bfd36e48a193fcffff13b73758087344ed Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Move the sending of the D-Bus messages with reply to the threadThiago Macieira2015-09-153-8/+18
| | | | | | | | | | | This is intended to simply the handling of the socket in the future. Now, we know that all calls to send_with_reply are placed only from the manager's thread. Task-number: QTBUG-43585 Change-Id: Ic5d393bfd36e48a193fcffff13b737575c231927 Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Remove superfluous code in QDBusConnectionPrivate::sendWithReplyThiago Macieira2015-09-151-6/+0
| | | | | | | | | | | | No need to check for the local loop if that's the first thing QDBusConnectionPrivate::sendWithReplyAsync will do. The side effect is that this now allocates memory for the QDBusPendingCallPrivate object, but loopback messages aren't that common to be worth the special casing. Task-number: QTBUG-43585 Change-Id: Ic5d393bfd36e48a193fcffff13b73756ab802ba2 Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Simplify some code in QDBusConnectionPrivate::sendWithReplyAsyncThiago Macieira2015-09-151-24/+11
| | | | | | | | | | | They're pretty much the same, clearly a copy & paste. Instead, merge the two codepaths so that we don't run the risk of applying a change in one part and forgetting the other. Task-number: QTBUG-43585 Change-Id: Ic5d393bfd36e48a193fcffff13b737560f6753be Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Use a dedicated thread for handling incoming libdbus-1 eventsThiago Macieira2015-09-154-38/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | Each application will have one thread dedicated for this, for all QDBusConnections. I wouldn't mind sharing such a thread with other uses in Qt, provided none of them ever block (the QProcessManager thread comes to mind, but it's going away soon). The cost associated with this change in this commit is so far rather minimal. All incoming D-Bus calls need to be handled after an event is posted anyway, to avoid deadlocking on reentering libdbus-1 functions that acquire locks still held. The cost is the one more thread running and the cost of synchronizing them when an event is posted. The benefits far outweigh that cost: no longer will we have problems of QtDBus failing to run if the main system or session connections are used before QCoreApplication is run. Moreover, events can be received and handled in aux threads even if the main thread is blocked on some operation. Note: this commit may not be testable (tst_qdbusconnection may fail) Task-number: QTBUG-43585 Change-Id: Ic5d393bfd36e48a193fcffff13b737556ccd11a8 Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Implement the blocking QtDBus call in terms of the non-blocking oneThiago Macieira2015-09-156-86/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This simplifies the code a little by having a single code path. More importantly, we no longer need to call the evil function dbus_connection_send_with_reply_and_block. That function acquires a lock on the socket transport inside libdbus-1, which means all threads need to wait until the one call gets unblocked before they can continue. To do that, this commit reimplements the QDBus::Block part of QDBusConnectionPrivate::sendWithReply by reusing the existing call to sendWithReplyAsync() and then doing a blocking-wait with QDBusPendingCallPrivate::waitForFinished(). By using (Q)DBusPendingCall and the threaded connection approach (next commit), now we never block on the socket. That also means the code to call dbus_pending_call_block() is no longer necessary and the waitForFinished() function itself can be considerably simplified. As a side-effect of no longer blocking, a number of pre-existing race conditions that used to be hidden showed up. Note: this commit deadlocks without the threading (next commits). Task-number: QTBUG-43585 Change-Id: Ic5d393bfd36e48a193fcffff13b73754954a3f7d Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Make QDBusConnectionPrivate::send return boolThiago Macieira2015-09-152-14/+7
| | | | | | | | | It used to return the sent message's serial ID, but we never used that. So simply use boolean instead. Change-Id: Ic5d393bfd36e48a193fcffff13b73753ccf47759 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com> Reviewed-by: Albert Astals Cid <aacid@kde.org>
* Use a signal for updating the dispatch statusThiago Macieira2015-09-152-11/+4
| | | | | | | | | | | | | | The cost of connecting a signal may be a bit high, but it's comparable to looking up the invokable method. However, QMetaMethod::invoke has a higher cost than a signal-slot emission -- though in any case they're both dwarfed by the cost of allocating the QMetaCallEvent and the posting of it. This is much more readable, though. Change-Id: Iccecbecbe6288fb3b6d16578fdff3f203b6db29c Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com> Reviewed-by: Albert Astals Cid <aacid@kde.org>
* Use QDBusConnectionPrivate* when QDBusServer receives a new connectionThiago Macieira2015-09-155-17/+34
| | | | | | | | | This is because the socket activity will move to a different thread; QDBusConnectionPrivate* can be queued, QDBusConnection can't easily. Change-Id: I82722016018b7fcfb246cda6043469fadbfd987d Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Use QDBusServiceWatcher in QDBusAbstractInterface to track the ownerThiago Macieira2015-09-152-28/+19
| | | | | | | | | | | Instead of connecting to the "NameOwnerChanged" signal. This has better performance, is simpler to implement and is future-proof: when we switch to kdbus, there won't be a "NameOwnerChanged" signal to connect to. On the drawback side, this will use slightly more memory. Change-Id: I5801b8027949f041309567a493000fe7de9bf227 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com> Reviewed-by: Albert Astals Cid <aacid@kde.org>
* Fix deadlock if the last reference is dropped during deliveryThiago Macieira2015-09-153-18/+3
| | | | | | | | | | | | | | | | We increase the reference count of the connection during delivery of an incoming message, so it's possible that the corresponding deref will drop the last reference to the connection: another thread may have called disconnectFromBus/Peer. However, during destruction we try to drain the incoming socket queue, so we need to acquire the dispatch lock again. The solution is to always use deleteLater(), which means the deleteYourself() function is unnecessary. Change-Id: I27eaacb532114dd188c4ffff13d507039fcf7b6a Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Remove Q_DECLARE_TYPEINFO that causes a build errorThiago Macieira2015-08-221-1/+0
| | | | | | | | | | ICC doesn't like it qdbusintrospection_p.h(162): error: explicit specialization of class "QTypeInfo<QDBusIntrospection::Argument>" must precede its first use It's used by the QVector in the same class Change-Id: I7de033f80b0e4431b7f1ffff13f958971617b657 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge "Merge remote-tracking branch 'origin/5.5' into dev" into refs/staging/devTimur Pocheptsov2015-08-091-1/+1
|\
| * Merge remote-tracking branch 'origin/5.5' into devFrederik Gladhorn2015-08-061-1/+1
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/global/qt-cpp-defines.qdocconf src/3rdparty/forkfd/forkfd.c src/corelib/codecs/qtextcodec.cpp src/corelib/kernel/qmetatype.cpp src/corelib/tools/qset.qdoc src/gui/accessible/qaccessible.cpp src/gui/image/qpixmapcache.cpp src/opengl/qgl.cpp src/tools/qdoc/generator.cpp src/widgets/kernel/qwidget.cpp tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp Change-Id: I4fbe1fa756a54c6843aa75f4ef70a1069ba7b085
| | * Doc:added doc to undocumented functionsNico Vertriest2015-07-221-1/+1
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-36985 Change-Id: Ic358682b276d67ef804f727bcf14191718613469 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | | QDBusError: Disable function that isn't used in bootstrapped buildsThiago Macieira2015-08-061-0/+2
|/ / | | | | | | | | Change-Id: Id3d5c7bf4d4c45069621ffff13f7b73144537d81 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | Mark QDBus{ObjectPath,Signature,Variant} shared-come-qt6Marc Mutz2015-07-191-12/+19
| | | | | | | | | | | | | | The compiler-generated move operations are ok. Change-Id: Ida994b52e3ee6ce75afd50133e61488b94464eee Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDBusVariant: add ctor taking QVariant&&Marc Mutz2015-07-191-0/+3
| | | | | | | | | | Change-Id: Ia25c4bd6294955b0e8ea5ecc0c62719423542e84 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDBusConnection: declare as shared-come-Qt6Marc Mutz2015-07-191-1/+7
| | | | | | | | | | | | | | Requires adding member-swap and (at least in my copy) move operations. Change-Id: I1b638a81e4a41f467e69e352806524039e7b9f27 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add missing ↵Marc Mutz2015-07-191-0/+1
| | | | | | | | | | | | | | Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusConnection::ConnectionCapabilities) Change-Id: I659ccc00129d20bbae08b277a291d81c6ede80be Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDBusMessage: declare as shared-come-Qt6Marc Mutz2015-07-181-0/+6
| | | | | | | | | | | | | | | | | | | | Requires adding member-swap and (at least in my copy) move assignment. Since the type does not contain a d == nullptr state, a move constructor isn't yet possible. Change-Id: Iad6939fa30f214591eab1fdf30a2cf1423ffb32a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDBusError: declare as shared-come-Qt6Marc Mutz2015-07-181-0/+15
| | | | | | | | | | | | | | Requires adding member-swap and (at least in my copy) move operations. Change-Id: I4284484b1f520eb2d9036b993a5b5b70aaea0af9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDBusArgument: declare as shared-come-Qt6Marc Mutz2015-07-181-0/+7
| | | | | | | | | | | | | | Requires adding member-swap and (at least in my copy) move operations. Change-Id: I0b32c387809c972203c94677616fe0a52143ec3b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDBusObjectPath: add ctor taking QString&&Marc Mutz2015-07-181-0/+3
| | | | | | | | | | | | | | | | The new constructor cannot be marked nothrow, because it calls non-nothrow doCheck(); Change-Id: I4e5b33c58125091644573ed84e715c7fa946ae09 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDBusSignature: add ctor taking QString&&Marc Mutz2015-07-181-0/+3
| | | | | | | | | | | | | | | | The new constructor cannot be marked nothrow, because it calls non-nothrow doCheck(); Change-Id: I732fac7a07d46a3ff3be0e4e56de72dd19090737 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Mark QDBusSlotCache{,::Data} sharedMarc Mutz2015-07-181-0/+11
| | | | | | | | | | | | | | The compiler-generated move operations are ok. Change-Id: Iec0fed49d52ace5ca7dae2c7ee53d717a283f15a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDBusObjectPath / QDBusSignature: add missing =0 on qHash seed argumentMarc Mutz2015-07-101-2/+2
| | | | | | | | | | Change-Id: I68396e319d9204f7e1e9ef8562ffefa7db565057 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | QtDBus: replace some inefficient QLists with QVectorMarc Mutz2015-07-102-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QDBusIntrospection::Argument and the QPair 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 marking the types movable, if not already done, and holding them in QVector instead. Change-Id: I1cf88287cc3a1d87e1fcd5061ed8d6d19d2f0722 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QtDBus: mark QDBusAdaptorConnector::AdaptorData as primitiveMarc Mutz2015-07-081-0/+1
| | | | | | | | | | | | | | It is held in QVector. Change-Id: I56e95f9a3a64d3e79914098873a382d233754fa3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QDBusConnection: fix misleading placement of Q_DECLARE_FLAGSMarc Mutz2015-07-081-1/+2
| | | | | | | | | | | | | | | | Was placed under an unrelated enum. Move it to the correct one. Change-Id: I0cf1ffc678c4cffae16660acde95183d5ebcad03 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | dbus: allow dbus_shutdown() on QT_NO_LIBRARY && QT_LINKED_LIBDBUSUlf Hermann2015-07-061-2/+2
| | | | | | | | | | | | | | | | If you statically link in a dbus library you'll have dbus_shutdown() available. Change-Id: Ieeded63838423a14a5530a4edb0ea46dc9b58d18 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | QtDBus: mark some types as movable come Qt 6Marc Mutz2015-07-061-0/+9
| | | | | | | | | | | | | | | | Marking them movable now would make QLists of these types BiC. Change-Id: I7ae06aec596b349ee05e48f24a077af743450669 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QtDBus: Use Q_NULLPTR instead of 0 in all public headersMarc Mutz2015-07-047-10/+10
| | | | | | | | | | | | | | | | | | This is in preparation of adding -Wzero-as-null-pointer-constant (or similar) to the headers check. Task-number: QTBUG-45291 Change-Id: If258b503c5ce335ecc22a5176d3e2b21aa7a278a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.5' into devLiang Qi2015-07-012-1/+2
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.cpp src/corelib/global/qglobal.h src/corelib/global/qsysinfo.h src/corelib/global/qsystemdetection.h src/corelib/kernel/qobjectdefs.h src/plugins/plugins.pro tests/auto/widgets/itemviews/qlistview/qlistview.pro Change-Id: Ib55aa79d707c4c1453fb9d697f6cf92211ed665c
| * Fix warning with MSVC 2013Thiago Macieira2015-06-261-0/+1
| | | | | | | | | | | | | | | | | | | | warning C4100: 'name' : unreferenced formal parameter This is despite the new Q_ASSERT "using" its expression even in release mode. Change-Id: Ieebfc4ab72a6493eaa68ffff13ead0574dd78627 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
| * fix usage of wince scopeOswald Buddenhagen2015-06-051-1/+1
| | | | | | | | | | | | | | Fix style issues along the way. Change-Id: Ic6a6de28e198eb0b14c198b802e78845703909b9 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | QtDBus: make all Q_DECLARE_SHARED types nothrow move-assignableMarc Mutz2015-06-302-7/+8
| | | | | | | | | | Change-Id: I5b04fb44b632a0bbb290199fc092b3ffd8289650 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | dbus: Use QList::reserve(), reduces reallocations.Sérgio Martins2015-06-233-2/+10
| | | | | | | | | | | | Change-Id: I5d60220c4d3014067a45a3d3553f0523c9fc7c74 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | qDBusRealAddTimeout(): don't create a QList just to check it's emptyMarc Mutz2015-06-171-1/+1
| | | | | | | | | | | | | | | | | | Instead of QHash::keys(value).isEmpty(), use QHash::key(value, 0) == 0 (0 is used a failure indicator three lines down, so it should not be a key in the hash table). Change-Id: I75cc4f7f7540dc5c51a7b8e3add09a0ec6a75e05 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | Fix conditions for disabling dbus dynamic symbol lookupUlf Hermann2015-06-162-6/+6
| | | | | | | | | | | | | | | | We cannot do this if no library support is present. Incidentally that's the case when bootstrapping, but you can also set the flag manually. Change-Id: I51e167176d0839af5858122630ef623a1c69a106 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.5' into devSimon Hausmann2015-06-033-3/+12
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qnamespace.qdoc src/corelib/io/qwindowspipereader.cpp src/corelib/io/qwindowspipereader_p.h src/corelib/statemachine/qstatemachine.cpp src/corelib/statemachine/qstatemachine_p.h src/plugins/platforms/xcb/qxcbconnection.h tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp tests/auto/tools/qmake/tst_qmake.cpp tests/manual/touch/main.cpp Change-Id: I917d694890e79ee3da7d65134b5b085e23e0dd62