Commit Graph

1898 Commits

Author SHA1 Message Date
Ulf Hermann
5f950a80cc Android: Run all of AndroidRunner in a separate thread
This removes the need for blocking queued connections and runAsync(),
reducing the risk of deadlocks and eliminating unguarded concurrent
access to various members of AndroidRunner. No mutex locking is
necessary anymore as all communication between the two threads is
either done on initialization, before the worker thread starts, or
via queued signals.

Change-Id: Icc2fcc2c0ce73d1c226bc4740413e57490d1cbc6
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-08-18 09:32:34 +00:00
Orgad Shaneh
670e54345c Remove use of deprecated Qt algorithms
Change-Id: Ib35cffa2d5762874feea9b1d4df7f569c0e5f496
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-08-09 13:41:25 +00:00
Ulf Hermann
100b3da662 Android: Make AndroidRunner a plain QObject
We're not using it as QThread.

Change-Id: Ib277325179a46fe7d153ff9d37043f54d0d41037
Reviewed-by: Vikas Pachdha <vikas.pachdha@theqtcompany.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2016-08-08 08:06:55 +00:00
Ulf Hermann
15fbfaf2e9 Move icons to Utils
This way we can use them from libraries, not only from plugins.

Change-Id: Ic35cfd5f04d638d87606bf272b2c00ded1267c1b
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2016-08-05 10:52:53 +00:00
Orgad Shaneh
1853f01a5b Merge remote-tracking branch 'origin/4.1'
Change-Id: Ia442f30f387fe9292217582260bbe79e54608810
2016-08-05 11:40:07 +02:00
hjk
588443b259 Debugger: Use a StandardRunnable for the debugger process
One step further to separate the debugger environment from the
inferior environment and to make it possible to configure a
working directory. Guessing one from the inferior's working
directory is not always a good idea.

Change-Id: I33d139c0f228ec0870556b82bc6aecca0a8e62d6
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-08-04 10:07:43 +00:00
Vikas Pachdha
7458d82a37 Fixes Permission model downgrade issue
Task-number: QTCREATORBUG-16630
Change-Id: I2ec8fbe186d9a78efa1457a5fbbbaf1fe4da80b5
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2016-08-03 13:29:36 +00:00
Vikas Pachdha
5cdff92c58 Refactoring: Android Deployment failure error codes
Change-Id: I88165fcad770e8b8341b252e4fc32b437528647b
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-08-03 13:26:40 +00:00
Nazar Gerasymchuk
90629108fc UI files: Fix tab order in lots of UI forms
For unknown reasons tab order in listed UI files was set incorrectly and
behave unexpectedly. Now tab order behave naturally.

Changes made for listed objects and touches only UI.

Change-Id: I057b95eb21943ddb29b108682618382661db7be9
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-08-02 14:29:27 +00:00
Ulf Hermann
6c2036d900 Android: Run stop() asynchronously
Running SynchronousProcess (for adb) on the GUI thread is dangerous as
it might process unrelated events without returning, breaking
assumptions in other parts of Qt Creator. Rather run those things on a
worker thread, with a separate event loop, like we already do it when
starting processes.

Furthermore, returning, from start() or stop() while a thread is
running that accesses internals of AndroidRunner is also dangerous,
because most methods of AndroidRunner are not protected by relevant
mutexes and especially the destructor might get invoked while the
worker thread is still runnig. Thus, wait for the worker threads to
finish, in start() and stop().

This is a crutch, of course, as with proper locking we could keep the
GUI thread responsive while the adb commands are running, but just
serializing the execution reduces the risk of further breakage for now.

Change-Id: Ife92dc19aa8111374413590c3156027ba759746f
Task-number: QTCREATORBUG-16667
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-08-01 08:09:26 +00:00
Ulf Hermann
cbd738ab90 Android: Don't use blocking queued connections for running ps
If ps is run from a different thread than the GUI thread, then we are
obviously not dealing with the "checkPID" function that's running every
second. We don't need to be overly prudent about starting another
process then. On the other hand, the blocking queued connection relies
on the ps shell not getting closed from a different thread in between
and it is generally a risk for creating dead locks.

Change-Id: Ief49fb18cc3199dc345c4d9ca0ee24b66d33343c
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-08-01 08:09:21 +00:00
Orgad Shaneh
35d7352b3e Merge remote-tracking branch 'origin/4.1'
Change-Id: Ie96fa53a88bcd06fa688a579c1d84aaf6f5e905f
2016-07-29 16:13:18 +03:00
Ulf Hermann
659b0b4788 Android: Add context objects for QObject::connect with functors
If several threads can be involved in the signal/slot exchange we need
to show the receiver objects to connect() so that the signals can be
queued when necessary.

Change-Id: I24b4fe90095ce10eeeff9618faff97bd9d05c6eb
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-07-28 07:20:44 +00:00
Orgad Shaneh
1b34f2a4b8 Merge remote-tracking branch 'origin/4.1'
Change-Id: Ia90424d479936a898705c433e5810c77ae088b2c
2016-07-22 15:18:00 +03:00
Vikas Pachdha
316ad743fa Signal to notify gradle selection
Change-Id: Ie9db0ca4b4133e63f06cda8fe9f3be8080eeaae9
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-07-19 10:09:47 +00:00
Tobias Hunger
5efd82468b SynchronousProcess: Store raw bytes from stdout/stderr of the process
Only convert the raw output later in a stdOut() and stdErr() method of
the SynchronousProcessResponse.

This is necessary since we have processes that use different encodings
for different sections of the file (I am looking at you, git).

Also remove the signals for raw data on stdout/stderr, leaving only the
signals returning buffered QString lines. This should be safe, even
with UTF-16 output.

Change-Id: Ida613fa86d1468cbd33bc6b3a1506a849c2d1c0a
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-07-15 14:16:03 +00:00
Tobias Hunger
cb14fb0d71 Kits: Save several ToolChains per kit
BREAKS BACKWARD COMPATIBILITY OF TOOLCHAIN SETTINGS!

* Convert old ToolChainKitInformation to new version
* Store several toolchains in one kit (one per language)

Change-Id: Ia59a2ad067c57971ec34ce9b2e43758344443755
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2016-07-14 15:34:06 +00:00
Tobias Hunger
ca04c4c264 ToolChainFactory: Add support for different languages
* Add a pure virtual method to get supportedLanguges with

Change-Id: Ida4445ca045c90fb9f7656a661af83e5b6801b30
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2016-07-14 15:33:40 +00:00
Tobias Hunger
1304b250eb ToolChain: Make sure all ToolChains have a language set
* Add code to toolchains
* Assert that this is the case in the toolchainmanager

Change-Id: I82452689e83279fd9d1afb3140b0070bef9b6cd8
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2016-07-14 15:33:33 +00:00
Vikas Pachdha
148d7636f1 Starting AVD in run step. Before this change AVD was started only in deploy step.
Task-number: QTCREATORBUG-10237
Change-Id: Ic99cc84013e53ddc60ed05c7983e141ecfc75169
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-07-13 09:50:45 +00:00
Tobias Hunger
4ac80fe3a0 ToolChains: Trigger ToolChainManager::toolChainChanged signal
Trigger ToolChainManager::toolChainChanged signal when something
changes. This was apparently missing in quite a few places of
some of the tool chains.

Change-Id: Ic94c6559e6267f4ff22dc74cc5b0865fb7aeac63
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2016-07-06 12:53:52 +00:00
Orgad Shaneh
88dfa84fc6 Android: Use Qt5-style connects
The heavy lifting was done by clazy.

Change-Id: Id09b62b7b9812d9c0981202c257d18387a8b09d9
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-07-04 09:35:58 +00:00
Eike Ziller
4f9016e03f Merge remote-tracking branch 'origin/4.0' into 4.1
Conflicts:
	qtcreator.pri
	qtcreator.qbs
	src/plugins/android/android.qbs
	src/plugins/android/androiddevice.cpp
	src/plugins/autotest/testcodeparser.cpp
	src/plugins/debugger/analyzer/analyzerstartparameters.h
	src/plugins/projectexplorer/devicesupport/desktopdevice.cpp
	src/plugins/projectexplorer/devicesupport/idevice.cpp
	src/plugins/projectexplorer/runconfiguration.h

Change-Id: I2474d06f2309fa71210a8401846bc2ef85bebf1d
2016-06-22 11:09:32 +02:00
hjk
3f11ef9216 Avoid using dynamic_cast<>
dynamic_cast<> breaks in cross-library situations. In the past
the issue was witnessed on Mac, this time on FreeBSD in
various configurations.

The workaround deployed here is to manually create unique
type ids in form of (addresses of) global variables.

Task-id: QTCREATORBUG-16462
Change-Id: Ie28fbb3d31d06c1a722a3d9ea808831191298e71
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Ralf Nolden <nolden@kde.org>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-06-22 07:31:41 +00:00
hjk
78a800cb34 Debugger: Use dedicated structure for Qml server parameters
The main idea is to start using ProjectExplorer::Connection later.

Change-Id: Ie91eacdfb0e93ae142fec7ce32bcf554a5282122
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-06-14 06:25:34 +00:00
Eike Ziller
92e352f4f0 EditorManager: Auto-suspend editors
Adds an option (enabled by default) to close older documents when
opening new documents. These documents are put into "suspended" state,
similar to when restoring sessions: They editors and document are
removed, freeing the memory from their content and attached resources
(e.g. code model resources), but keeping the entry in the open editor
list (and history list, of course).
This is limited to editor/document types that can restore their UI state
when the document is reopened.

Task-number: QTCREATORBUG-10016
Change-Id: Icb5595aec950e3f666d42177fe2fd233954f2772
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2016-06-13 12:56:12 +00:00
Christian Kandeler
44c5c6ac58 Add static library for qmake project file parser.
This is needed to build plugins "out of source".

Change-Id: If842cde86e1eb54daa3daf7f9d6f27751f657d9e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-06-13 09:34:10 +00:00
Christian Kandeler
f085cb2236 qbs build: More steps toward creating a "development installation".
Namely:
    - Install header files.
    - Install imports and modules.
    - Create modules from products and install them.

This is most of what we need. The main thing still left to do is
dealing with paths in Export items. These have to be translated
somehow. (Currently we only copy the Depends items out of the
Export items and ignore everything else.)

Change-Id: I12d49fa31d1c1e05bc77a0e0ce3ec9c78c27192a
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-06-13 08:36:26 +00:00
BogDan Vatra
26dd602785 Don't show wait cursor when doing lots of fast operations
Change-Id: I430530d78cadb09a2445ad146a7c644414e64587
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-06-10 14:10:18 +00:00
BogDan Vatra
ec80aa80bd Android: Skip empty lines
Otherwise AndroidConfig::connectedDevices will return unexisting devices.

Change-Id: I85e87ff48784bfeb37b591507408ace2656b08dc
Reviewed-by: hjk <hjk@theqtcompany.com>
2016-06-10 10:39:36 +00:00
hjk
519cc8ded6 ProjectExplorer: De-duplicate code in IBuildStepFactory derived classes
This removes 900 lines of duplicated code, some duplicated checks at
runtime and some (minor) quadratic behavior when gathering display names.

canClone(), canRestore() and canCreate() and restore() use the same
pattern. Handle that on the core side once. Leave retore() virtual to let
the ios code unmodified (which is likely not needed, later...). Introduce
'Unclonable' and 'Uncreatable' flags to keep Android package installation
and WinRT deployment (non-)functionality unchanged.

Change-Id: I0325479aff818a4038b2f241ca733b8d8cd66f2f
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-06-10 10:34:51 +00:00
BogDan Vatra
4ce0494284 Android: Fix adbShellAmNeedsQuotes
Regressions was introduced by ddefe062c7

Change-Id: I0bc3f75b788472db78998c32d0007d4250a62f5a
Reviewed-by: hjk <hjk@theqtcompany.com>
2016-06-10 10:19:49 +00:00
BogDan Vatra
19b513c7a2 Android: Initialize m_handShakeMethod
Change-Id: I016c98669c7a361e0d4a6c0da0cba8e3b8feccf6
Reviewed-by: hjk <hjk@theqtcompany.com>
2016-06-10 10:19:42 +00:00
hjk
db9437c2e8 Generalize IDevice::qmlProfilerHost
The idea is to have a way for tools to specify what kind of
control channel they would like to use to communicate with
a device without making the choice explicit dependent on
the exact kind of tool to further decouple device and tool
implementations.

The 'hint' values are there to help the device implementation
to decide on which channel to use exactly in case there are
multiple choices. In any case, the tool is responsible to
check that the returned channel is suitable for its operation.

Currently the only choice is "QmlControlChannel" yielding
a simple wrapper around the former IDevice::qmlProfilerHost()
return value.

Other enum values may potentially be {Tcp,LocalSocket}ControlChannel
(to specify a type of transport) AdbChannel (to specify some
generic helper mechanism). It might also turn out that something
more complex than an enum will be needed, e.g. to express
a set of values with priorities or such, but I'd rather
avoid overengineering for now.

Change-Id: Id386425eb3dd2bb395065f0bdb6f67217cd40a71
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2016-06-08 08:16:22 +00:00
hjk
364943012b Android: Robustify settings page apply()
Change-Id: If64a56e9102efe4b8b444c3f84502a43af60d627
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-06-03 15:59:19 +00:00
Eike Ziller
79733e5625 Remove a few TextDocument subclasses
Which only differed in some property settings.

Change-Id: Ie844c32709ebe719a5b749fd2ef828b64086ba9a
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2016-05-31 07:31:29 +00:00
Tobias Hunger
5d3823ac47 Use SynchronousProcess::runBlocking
Use SynchronousProcess::runBlocking in favor of SychronousProcess::run.
This avoid nested event loops which can produce really strange crashes
if not use carefully.

This patch only converts those processes that have a timeout of less
than 5 seconds or use the default timeout.

Change-Id: I9de8899dcc946af7049ea357a91972996c0256a1
Reviewed-by: Vikas Pachdha <vikas.pachdha@theqtcompany.com>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-05-26 11:50:03 +00:00
Vikas Pachdha
399b93966a Fixed the issue where Android build SDK was not populated anymore
Task-number: QTCREATORBUG-16280
Change-Id: I35e174e8c9dca2475e2c7c8c858c17ad7e6141f1
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-05-20 13:07:41 +00:00
hjk
67f9a26208 Merge AnalyzerRunControl::logMessage and RunControl::appendMessage
The tools' ability to hook into processing of the output is
retained by making the function virtual.

Also remove the unusual overload of the RunControl::appendMessage
slot and the signal of the same name by renaming the signal.

Change-Id: If3c3cc2dd9c933169dc30b16e3165c9b3cf1440e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-05-20 10:52:26 +00:00
hjk
10ca24347f Android: Minor code cosmetics
Connects, namespaces, includes, ...

Change-Id: I066a03e528df0e485f8ac473db94f17175277fb4
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-05-19 08:58:40 +00:00
hjk
602d899e0f Move CustomExecutableRunConfiguration to ProjectExplorer
There's nothing QtSupport specific in there.

Change-Id: I616a37ed56f1853cdbb16f483de5682d5ea63715
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-05-13 11:03:06 +00:00
Tobias Hunger
ddefe062c7 Fix up QProcess::waitForFinished()
waitForFinish returns false if the process is no longer running at
the time of the call. Handle that throughout the codebase.

Change-Id: Ia7194095454e82efbd4eb88f2d55926bdd09e094
Reviewed-by: hjk <hjk@theqtcompany.com>
2016-05-11 10:04:38 +00:00
Eike Ziller
9e66ce48e4 Merge remote-tracking branch 'origin/4.0'
Conflicts:
	src/plugins/autotest/testcodeparser.cpp
	src/tools/clangbackend/ipcsource/clangbackendclangipc-source.pri
	tests/unit/unittest/unittest.pro

Change-Id: I9db4fbea6ea7c9fdd0d8e1703735af20c92e754b
2016-05-09 16:37:41 +02:00
hjk
3d34ccf4d9 Debugger: Enforce use of target-async for Android gdbserver
Since NDK r11 this seems to be needed to get breakpoints set
correctly on Linux and Mac.

Change-Id: I54281feecc0a915d4761228c612b72889756aecf
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-05-09 12:47:59 +00:00
BogDan Vatra
d342623bb7 Don't wait too much to connect.
Some AVDs down't allow to connect to their console,
there is no point to wait 30s (which is the default connection timeout).

Change-Id: I3cb82b99f958787215f44b471abfc203d7633089
Reviewed-by: Vikas Pachdha <vikas.pachdha@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-05-09 07:36:32 +00:00
Eike Ziller
0f94aa3f4d Merge remote-tracking branch 'origin/4.0'
Conflicts:
	src/plugins/debugger/debuggerruncontrol.cpp
	src/plugins/projectexplorer/projectwizardpage.cpp
	src/plugins/projectexplorer/xcodebuildparser.h
	src/plugins/qmldesigner/qmldesignerplugin.cpp
	src/tools/clangbackend/ipcsource/translationunits.cpp

Change-Id: Ibf0857cf8dbf95fc9ac13d5c2112b3f4a2ca7de6
2016-05-03 11:49:01 +02:00
hjk
bff8c3108d Android: Make avd name extraction more robust.
The output of the console seems to have changed lately and includes
some initial help hint now. Try to ignore that by always using the
output before the last OK in the the response.

Change-Id: I1cd5bfedd1aaea9de0d494b92d965ce0c60d1655
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Vikas Pachdha <vikas.pachdha@theqtcompany.com>
2016-05-02 09:09:48 +00:00
hjk
4dbb6ecd84 Android/Debugger: Always extract GDB version from binary
Change-Id: I19ab6e70a273e803b9755966e15253e006df3940
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-05-02 06:29:44 +00:00
hjk
6b2d2160a7 Android/Debugger: Use -exec-continue instead of -exec-run
... and use the symbol file similarly to the other remote
setups. This makes it work with NDK r10e at least.

Change-Id: I4264d6201d1fb9dd0fed71168ee4155dde53265c
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2016-04-29 15:00:51 +00:00
BogDan Vatra
e26bbc8459 Fix warnings
Don't try to write from another thread into a process stdin. Fixes
"QSocketNotifier: Socket notifiers cannot be enabled or disabled from
another thread" warnings.

Change-Id: Id93a40a6bee6d4042cf600c8fabb06bf965d8ccc
Reviewed-by: hjk <hjk@theqtcompany.com>
2016-04-29 13:35:40 +00:00