Device: Don't cache qmlRunCommand

Caching makes the settings page less snappy.

Also fixed searching for qml runtime if not set in
QmlProjectRunConfiguration

Fixes: QTCREATORBUG-29341
Change-Id: Ia3ce72f3e3b857a857f706694794304dcbf1793c
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Robert Löhning <robert.loehning@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-06-30 11:58:41 +02:00
parent 857f22e6c9
commit 57ff63bb96
2 changed files with 11 additions and 24 deletions

View File

@@ -207,15 +207,15 @@ FilePath QmlProjectRunConfiguration::qmlRuntimeFilePath() const
// We might not have a full Qt version for building, but the device
// might know what is good for running.
if (IDevice::ConstPtr dev = DeviceKitAspect::device(kit)) {
IDevice::ConstPtr dev = DeviceKitAspect::device(kit);
if (dev) {
const FilePath qmlRuntime = dev->qmlRunCommand();
if (!qmlRuntime.isEmpty())
return qmlRuntime;
}
// The Qt version might know. That's the "build" Qt version,
// i.e. not necessarily something the device can use, but the
// device had its chance above.
// The Qt version might know, but we need to make sure
// that the device can reach it.
if (QtVersion *version = QtKitAspect::qtVersion(kit)) {
// look for puppet as qmlruntime only in QtStudio Qt versions
if (version->features().contains("QtStudio") &&
@@ -229,13 +229,13 @@ FilePath QmlProjectRunConfiguration::qmlRuntimeFilePath() const
}
}
const FilePath qmlRuntime = version->qmlRuntimeFilePath();
if (!qmlRuntime.isEmpty())
if (!qmlRuntime.isEmpty() && (!dev || dev->ensureReachable(qmlRuntime)))
return qmlRuntime;
}
// If not given explicitly by run device, nor Qt, try to pick
// it from $PATH on the run device.
return "qml";
return dev ? dev->filePath("qml").searchInPath() : "qml";
}
void QmlProjectRunConfiguration::createQtVersionAspect()