forked from qt-creator/qt-creator
Android: For Emulators show if opengl is enabled or not
Change-Id: Ib20c1f425f91f34749bce837f14ef7a1e36273e3 Task-number: QTCREATORBUG-13615 Reviewed-by: BogDan Vatra <bogdan@kde.org>
This commit is contained in:
@@ -848,20 +848,51 @@ bool AndroidConfig::isBootToQt(const QString &device) const
|
|||||||
return adbProc.readAll().contains("Boot2Qt");
|
return adbProc.readAll().contains("Boot2Qt");
|
||||||
}
|
}
|
||||||
|
|
||||||
int AndroidConfig::getSDKVersion(const QString &device) const
|
QString AndroidConfig::getDeviceProperty(const QString &device, const QString &property) const
|
||||||
{
|
{
|
||||||
// workaround for '????????????' serial numbers
|
// workaround for '????????????' serial numbers
|
||||||
QStringList arguments = AndroidDeviceInfo::adbSelector(device);
|
QStringList arguments = AndroidDeviceInfo::adbSelector(device);
|
||||||
arguments << QLatin1String("shell") << QLatin1String("getprop")
|
arguments << QLatin1String("shell") << QLatin1String("getprop")
|
||||||
<< QLatin1String("ro.build.version.sdk");
|
<< property;
|
||||||
|
|
||||||
QProcess adbProc;
|
QProcess adbProc;
|
||||||
adbProc.start(adbToolPath().toString(), arguments);
|
adbProc.start(adbToolPath().toString(), arguments);
|
||||||
if (!adbProc.waitForFinished(10000)) {
|
if (!adbProc.waitForFinished(10000)) {
|
||||||
adbProc.kill();
|
adbProc.kill();
|
||||||
return -1;
|
return QString();
|
||||||
}
|
}
|
||||||
return adbProc.readAll().trimmed().toInt();
|
|
||||||
|
return QString::fromLocal8Bit(adbProc.readAll());
|
||||||
|
}
|
||||||
|
|
||||||
|
int AndroidConfig::getSDKVersion(const QString &device) const
|
||||||
|
{
|
||||||
|
QString tmp = getDeviceProperty(device, QLatin1String("ro.build.version.sdk"));
|
||||||
|
if (tmp.isEmpty())
|
||||||
|
return -1;
|
||||||
|
return tmp.trimmed().toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
AndroidConfig::OpenGl AndroidConfig::getOpenGLEnabled(const QString &emulator) const
|
||||||
|
{
|
||||||
|
QDir dir = QDir::home();
|
||||||
|
if (!dir.cd(QLatin1String(".android")))
|
||||||
|
return OpenGl::Unknown;
|
||||||
|
if (!dir.cd(QLatin1String("avd")))
|
||||||
|
return OpenGl::Unknown;
|
||||||
|
if (!dir.cd(emulator + QLatin1String(".avd")))
|
||||||
|
return OpenGl::Unknown;
|
||||||
|
QFile file(dir.filePath(QLatin1String("config.ini")));
|
||||||
|
if (!file.exists())
|
||||||
|
return OpenGl::Unknown;
|
||||||
|
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||||
|
return OpenGl::Unknown;
|
||||||
|
while (!file.atEnd()) {
|
||||||
|
QByteArray line = file.readLine();
|
||||||
|
if (line.contains("hw.gpu.enabled") && line.contains("yes"))
|
||||||
|
return OpenGl::Enabled;
|
||||||
|
}
|
||||||
|
return OpenGl::Disabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
//!
|
//!
|
||||||
@@ -873,20 +904,11 @@ QString AndroidConfig::getProductModel(const QString &device) const
|
|||||||
{
|
{
|
||||||
if (m_serialNumberToDeviceName.contains(device))
|
if (m_serialNumberToDeviceName.contains(device))
|
||||||
return m_serialNumberToDeviceName.value(device);
|
return m_serialNumberToDeviceName.value(device);
|
||||||
// workaround for '????????????' serial numbers
|
|
||||||
QStringList arguments = AndroidDeviceInfo::adbSelector(device);
|
|
||||||
arguments << QLatin1String("shell") << QLatin1String("getprop")
|
|
||||||
<< QLatin1String("ro.product.model");
|
|
||||||
|
|
||||||
QProcess adbProc;
|
QString model = getDeviceProperty(device, QLatin1String("ro.product.model")).trimmed();
|
||||||
adbProc.start(adbToolPath().toString(), arguments);
|
|
||||||
if (!adbProc.waitForFinished(10000)) {
|
|
||||||
adbProc.kill();
|
|
||||||
return device;
|
|
||||||
}
|
|
||||||
QString model = QString::fromLocal8Bit(adbProc.readAll().trimmed());
|
|
||||||
if (model.isEmpty())
|
if (model.isEmpty())
|
||||||
return device;
|
return device;
|
||||||
|
|
||||||
if (!device.startsWith(QLatin1String("????")))
|
if (!device.startsWith(QLatin1String("????")))
|
||||||
m_serialNumberToDeviceName.insert(device, model);
|
m_serialNumberToDeviceName.insert(device, model);
|
||||||
return model;
|
return model;
|
||||||
|
@@ -164,6 +164,8 @@ public:
|
|||||||
static QLatin1String displayName(const ProjectExplorer::Abi &abi);
|
static QLatin1String displayName(const ProjectExplorer::Abi &abi);
|
||||||
|
|
||||||
QString getProductModel(const QString &device) const;
|
QString getProductModel(const QString &device) const;
|
||||||
|
enum class OpenGl { Enabled, Disabled, Unknown };
|
||||||
|
OpenGl getOpenGLEnabled(const QString &emulator) const;
|
||||||
bool hasFinishedBooting(const QString &device) const;
|
bool hasFinishedBooting(const QString &device) const;
|
||||||
bool waitForBooted(const QString &serialNumber, const QFutureInterface<bool> &fi) const;
|
bool waitForBooted(const QString &serialNumber, const QFutureInterface<bool> &fi) const;
|
||||||
bool isConnected(const QString &serialNumber) const;
|
bool isConnected(const QString &serialNumber) const;
|
||||||
@@ -172,6 +174,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
static CreateAvdInfo createAVDImpl(CreateAvdInfo info, Utils::FileName androidToolPath, Utils::Environment env);
|
static CreateAvdInfo createAVDImpl(CreateAvdInfo info, Utils::FileName androidToolPath, Utils::Environment env);
|
||||||
static QVector<AndroidDeviceInfo> androidVirtualDevicesImpl(const Utils::FileName &androidTool, const Utils::Environment &environment);
|
static QVector<AndroidDeviceInfo> androidVirtualDevicesImpl(const Utils::FileName &androidTool, const Utils::Environment &environment);
|
||||||
|
QString getDeviceProperty(const QString &device, const QString &property) const;
|
||||||
|
|
||||||
Utils::FileName toolPath(const ProjectExplorer::Abi &abi, const QString &ndkToolChainVersion) const;
|
Utils::FileName toolPath(const ProjectExplorer::Abi &abi, const QString &ndkToolChainVersion) const;
|
||||||
Utils::FileName openJDKBinPath() const;
|
Utils::FileName openJDKBinPath() const;
|
||||||
|
@@ -169,10 +169,28 @@ public:
|
|||||||
topLeft = AndroidConfigurations::currentConfig().getProductModel(device.serialNumber);
|
topLeft = AndroidConfigurations::currentConfig().getProductModel(device.serialNumber);
|
||||||
painter->drawText(size + 12, 2 + opt.rect.top() + fm.ascent(), topLeft);
|
painter->drawText(size + 12, 2 + opt.rect.top() + fm.ascent(), topLeft);
|
||||||
|
|
||||||
QString topRight = device.serialNumber;
|
|
||||||
// topRight
|
// topRight
|
||||||
if (device.type == AndroidDeviceInfo::Hardware) // otherwise it's not very informative
|
auto drawTopRight = [&](const QString text, const QFontMetrics &fm) {
|
||||||
painter->drawText(opt.rect.right() - fm.width(topRight) - 6 , 2 + opt.rect.top() + fm.ascent(), topRight);
|
painter->drawText(opt.rect.right() - fm.width(text) - 6 , 2 + opt.rect.top() + fm.ascent(), text);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (device.type == AndroidDeviceInfo::Hardware) {
|
||||||
|
drawTopRight(device.serialNumber, fm);
|
||||||
|
} else {
|
||||||
|
AndroidConfig::OpenGl openGl = AndroidConfigurations::currentConfig().getOpenGLEnabled(device.serialNumber);
|
||||||
|
if (openGl == AndroidConfig::OpenGl::Enabled) {
|
||||||
|
drawTopRight(tr("Open GL enabled"), fm);
|
||||||
|
} else if (openGl == AndroidConfig::OpenGl::Disabled) {
|
||||||
|
QFont font = painter->font();
|
||||||
|
font.setBold(true);
|
||||||
|
painter->setFont(font);
|
||||||
|
QFontMetrics fmBold(font);
|
||||||
|
drawTopRight(tr("OpenGL disabled"), fmBold);
|
||||||
|
font.setBold(false);
|
||||||
|
painter->setFont(font);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Directory
|
// Directory
|
||||||
QColor mix;
|
QColor mix;
|
||||||
|
Reference in New Issue
Block a user