aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--android/avd/info.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/android/avd/info.c b/android/avd/info.c
index 5634ef6..992f292 100644
--- a/android/avd/info.c
+++ b/android/avd/info.c
@@ -1281,14 +1281,27 @@ _getBuildSkin( AvdInfo* i, AvdInfoParams* params )
D("selecting default skin name '%s'", skinName);
}
- i->skinName = ASTRDUP(skinName);
-
if (!skinDir) {
#define PREBUILT_SKINS_DIR "sdk/emulator/skins"
+#define PRODUCT_SKIN_DIR "skin"
do {
- /* try in <sysdir>/../skins first */
+ /* look for the product skin in $ANDROID_PRODUCT_OUT/skin if no skin name is defined */
+ if (!params->skinName) {
+ /* look for <product_out>/skin first */
+ p = bufprint( temp, end, "%s/skin",
+ i->androidOut );
+ if (path_exists(temp)) {
+ p = bufprint( temp, end, "%s",
+ i->androidOut );
+ skinName = PRODUCT_SKIN_DIR;
+ D("selecting default product skin at '%s/%s'", temp, skinName);
+ break;
+ }
+ }
+
+ /* next try in <sysdir>/../skins */
p = bufprint( temp, end, "%s/../skins",
i->androidBuildRoot );
if (path_exists(temp))
@@ -1303,6 +1316,8 @@ _getBuildSkin( AvdInfo* i, AvdInfoParams* params )
p = bufprint( temp, end, "%s", skinDir );
}
+ i->skinName = ASTRDUP(skinName);
+
q = bufprint(p, end, "/%s/layout", skinName);
if (q >= end || !path_exists(temp)) {
DD("skin content directory does not exist: %s", temp);