diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2010-04-08 16:22:42 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2010-04-08 16:22:49 -0700 |
commit | 555d73444f8f053323828e354f446ccee41439d5 (patch) | |
tree | ea54340c9d1b70bed85beae1d820a98090f23a0d /android | |
parent | 94f3a6dcf04b8b66781eb116f45a9bbbe5e245fa (diff) | |
parent | fbcab322c2a12bfe49d0faaef91fccdc7bb97d4e (diff) | |
download | external_qemu-555d73444f8f053323828e354f446ccee41439d5.zip external_qemu-555d73444f8f053323828e354f446ccee41439d5.tar.gz external_qemu-555d73444f8f053323828e354f446ccee41439d5.tar.bz2 |
merge from tools-r6
Change-Id: I8b1287b619b6ec77024cb1ce56fabc80d2b1146d
Diffstat (limited to 'android')
-rw-r--r-- | android/avd/info.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/android/avd/info.c b/android/avd/info.c index 6766c96..d726112 100644 --- a/android/avd/info.c +++ b/android/avd/info.c @@ -139,6 +139,7 @@ struct AvdInfo { char* contentPath; IniFile* rootIni; /* root <foo>.ini file */ IniFile* configIni; /* virtual device's config.ini */ + IniFile* hardwareIni; /* skin-specific hardware.ini */ /* for both */ char* skinName; /* skin name */ @@ -172,6 +173,11 @@ avdInfo_free( AvdInfo* i ) i->configIni = NULL; } + if (i->hardwareIni) { + iniFile_free(i->hardwareIni); + i->hardwareIni = NULL; + } + if (i->rootIni) { iniFile_free(i->rootIni); i->rootIni = NULL; @@ -1328,6 +1334,30 @@ _getBuildSkin( AvdInfo* i, AvdInfoParams* params ) return 0; } +/* Read a hardware.ini if it is located in the skin directory */ +static int +_getBuildHardwareIni( AvdInfo* i ) +{ + char temp[PATH_MAX], *p=temp, *end=p+sizeof(temp); + + if (i->skinDirPath == NULL || i->skinName == NULL) + return 0; + + p = bufprint(temp, end, "%s/%s/hardware.ini", i->skinDirPath, i->skinName); + if (p >= end || !path_exists(temp)) { + DD("no skin-specific hardware.ini in %s", i->skinDirPath); + return 0; + } + + D("found skin-specific hardware.ini: %s", temp); + i->hardwareIni = iniFile_newFromFile(temp); + if (i->hardwareIni == NULL) + return -1; + + return 0; +} + + AvdInfo* avdInfo_newForAndroidBuild( const char* androidBuildRoot, const char* androidOut, @@ -1351,6 +1381,7 @@ avdInfo_newForAndroidBuild( const char* androidBuildRoot, /* we don't need to fail if there is no valid skin */ _getBuildSkin(i, params); + _getBuildHardwareIni(i); return i; @@ -1424,6 +1455,10 @@ avdInfo_getHwConfig( AvdInfo* i, AndroidHwConfig* hw ) if (ini != i->configIni) iniFile_free(ini); + if (ret == 0 && i->hardwareIni != NULL) { + ret = androidHwConfig_read(hw, i->hardwareIni); + } + /* special product-specific hardware configuration */ if (i->androidOut != NULL) { |