From b1c9784e741ff20fe9c326a854009cb080e33aae Mon Sep 17 00:00:00 2001
From: ck <qt-info@nokia.com>
Date: Wed, 21 Jul 2010 17:00:40 +0200
Subject: [PATCH] Maemo: Qemu: Bugfix + MADDE workaround.

Reviewed-by: kh1
---
 .../qt-maemo/qemuruntimemanager.cpp           | 32 +++++++++++++------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp
index b08172cac64..5ad000b2a0e 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp
@@ -359,13 +359,19 @@ void QemuRuntimeManager::startRuntime()
         m_qemuProcess->setProcessEnvironment(env);
         m_qemuProcess->setWorkingDirectory(rt.m_root);
 
-        const QString app = root + (QFileInfo(rt.m_bin).isRelative()
+        // This is complex because of extreme MADDE weirdness.
+        const bool pathIsRelative = QFileInfo(rt.m_bin).isRelative();
+        const QString app =
+#ifdef Q_OS_WIN
+        root % (pathIsRelative
             ? QLatin1String("madlib/") % rt.m_bin // Fremantle.
             : rt.m_bin)                           // Haramattan.
-#ifdef Q_OS_WIN
-            % QLatin1String(".exe")
+            % QLatin1String(".exe");
+#else
+        pathIsRelative
+            ? root % QLatin1String("madlib/") % rt.m_bin // Fremantle.
+            : rt.m_bin;                                  // Haramattan.
 #endif
-        ;   // keep
 
         m_qemuProcess->start(app % QLatin1Char(' ') % rt.m_args,
             QIODevice::ReadWrite);
@@ -512,12 +518,18 @@ bool QemuRuntimeManager::targetUsesRuntimeConfig(Target *target)
 
     MaemoRunConfiguration *mrc =
         qobject_cast<MaemoRunConfiguration *> (target->activeRunConfiguration());
-    if (mrc) {
-        const MaemoDeviceConfig &config = mrc->deviceConfig();
-        if (config.isValid() && config.type == MaemoDeviceConfig::Simulator)
-            return true;
-    }
-    return false;
+    if (!mrc)
+        return false;
+    Qt4BuildConfiguration *bc
+        = qobject_cast<Qt4BuildConfiguration *>(target->activeBuildConfiguration());
+    if (!bc)
+        return false;
+    QtVersion *version = bc->qtVersion();
+    if (!version || !m_runtimes.contains(version->uniqueId()))
+        return false;
+
+    const MaemoDeviceConfig &config = mrc->deviceConfig();
+    return config.isValid() && config.type == MaemoDeviceConfig::Simulator;
 }
 
 QString QemuRuntimeManager::maddeRoot(const QString &qmake) const
-- 
GitLab