aboutsummaryrefslogtreecommitdiffstats
path: root/android
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2012-04-19 13:48:26 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-04-19 13:48:26 -0700
commit6c6413d40ea9b8a658f4f1f2fa7303736fd156c6 (patch)
tree187ff45ac506b484153874505aca50cb33c92755 /android
parent88078b8875dab47abf9fe80488503f60d9835eaf (diff)
parent689d1147b1994be1d8e33ee4d1a8ec76742bb4a6 (diff)
downloadexternal_qemu-6c6413d40ea9b8a658f4f1f2fa7303736fd156c6.zip
external_qemu-6c6413d40ea9b8a658f4f1f2fa7303736fd156c6.tar.gz
external_qemu-6c6413d40ea9b8a658f4f1f2fa7303736fd156c6.tar.bz2
Merge "Fix skin issue when launching emulator from tree."
Diffstat (limited to 'android')
-rw-r--r--android/avd/info.c17
-rw-r--r--android/avd/info.h3
-rw-r--r--android/main.c3
3 files changed, 21 insertions, 2 deletions
diff --git a/android/avd/info.c b/android/avd/info.c
index f850f5b..3463f6a 100644
--- a/android/avd/info.c
+++ b/android/avd/info.c
@@ -780,12 +780,23 @@ _avdInfo_getBuildSkinHardwareIni( AvdInfo* i )
{
char* skinName;
char* skinDirPath;
- char temp[PATH_MAX], *p=temp, *end=p+sizeof(temp);
avdInfo_getSkinInfo(i, &skinName, &skinDirPath);
if (skinDirPath == NULL)
return 0;
+ int result = avdInfo_getSkinHardwareIni(i, skinName, skinDirPath);
+
+ AFREE(skinName);
+ AFREE(skinDirPath);
+
+ return result;
+}
+
+int avdInfo_getSkinHardwareIni( AvdInfo* i, char* skinName, char* skinDirPath)
+{
+ char temp[PATH_MAX], *p=temp, *end=p+sizeof(temp);
+
p = bufprint(temp, end, "%s/%s/hardware.ini", skinDirPath, skinName);
if (p >= end || !path_exists(temp)) {
DD("no skin-specific hardware.ini in %s", skinDirPath);
@@ -793,6 +804,8 @@ _avdInfo_getBuildSkinHardwareIni( AvdInfo* i )
}
D("found skin-specific hardware.ini: %s", temp);
+ if (i->skinHardwareIni != NULL)
+ iniFile_free(i->skinHardwareIni);
i->skinHardwareIni = iniFile_newFromFile(temp);
if (i->skinHardwareIni == NULL)
return -1;
@@ -1082,7 +1095,7 @@ avdInfo_getSkinInfo( AvdInfo* i, char** pSkinName, char** pSkinDir )
/* First, see if the config.ini contains a SKIN_PATH entry that
* names the full directory path for the skin.
*/
- if ( i->configIni != NULL ) {
+ if (i->configIni != NULL ) {
skinPath = iniFile_getString( i->configIni, SKIN_PATH, NULL );
if (skinPath != NULL) {
/* If this skin name is magic or a direct directory path
diff --git a/android/avd/info.h b/android/avd/info.h
index 11f4897..4388b7c 100644
--- a/android/avd/info.h
+++ b/android/avd/info.h
@@ -106,6 +106,9 @@ typedef struct {
*/
AvdInfo* avdInfo_new( const char* name, AvdInfoParams* params );
+/* Update the AvdInfo hardware config from a given skin name and path */
+int avdInfo_getSkinHardwareIni( AvdInfo* i, char* skinName, char* skinDirPath);
+
/* A special function used to setup an AvdInfo for use when starting
* the emulator from the Android build system. In this specific instance
* we're going to create temporary files to hold all writable image
diff --git a/android/main.c b/android/main.c
index 561428b..51d481c 100644
--- a/android/main.c
+++ b/android/main.c
@@ -319,6 +319,9 @@ int main(int argc, char **argv)
opts->skindir = skinDir;
D("autoconfig: -skindir %s", opts->skindir);
+
+ /* update the avd hw config from this new skin */
+ avdInfo_getSkinHardwareIni(avd, opts->skin, opts->skindir);
}
/* Read hardware configuration */