diff options
Diffstat (limited to 'native')
-rw-r--r-- | native/android/configuration.cpp | 10 | ||||
-rw-r--r-- | native/android/native_window.cpp | 2 | ||||
-rw-r--r-- | native/android/storage_manager.cpp | 15 |
3 files changed, 23 insertions, 4 deletions
diff --git a/native/android/configuration.cpp b/native/android/configuration.cpp index 7eb51dd..74cf80e 100644 --- a/native/android/configuration.cpp +++ b/native/android/configuration.cpp @@ -123,6 +123,11 @@ int32_t AConfiguration_getSmallestScreenWidthDp(AConfiguration* config) { return config->smallestScreenWidthDp; } +int32_t AConfiguration_getLayoutDirection(AConfiguration* config) { + return (config->screenLayout&ResTable_config::MASK_LAYOUTDIR) + >> ResTable_config::SHIFT_LAYOUTDIR; +} + // ---------------------------------------------------------------------- void AConfiguration_setMcc(AConfiguration* config, int32_t mcc) { @@ -210,6 +215,11 @@ void AConfiguration_setSmallestScreenWidthDp(AConfiguration* config, int32_t val config->smallestScreenWidthDp = value; } +void AConfiguration_setLayoutDirection(AConfiguration* config, int32_t value) { + config->screenLayout = (config->screenLayout&~ResTable_config::MASK_LAYOUTDIR) + | ((value<<ResTable_config::SHIFT_LAYOUTDIR)&ResTable_config::MASK_LAYOUTDIR); +} + // ---------------------------------------------------------------------- int32_t AConfiguration_diff(AConfiguration* config1, AConfiguration* config2) { diff --git a/native/android/native_window.cpp b/native/android/native_window.cpp index 99c0fd3..ca0c902 100644 --- a/native/android/native_window.cpp +++ b/native/android/native_window.cpp @@ -25,7 +25,7 @@ using namespace android; ANativeWindow* ANativeWindow_fromSurface(JNIEnv* env, jobject surface) { - sp<ANativeWindow> win = android_Surface_getNativeWindow(env, surface); + sp<ANativeWindow> win = android_view_Surface_getNativeWindow(env, surface); if (win != NULL) { win->incStrong((void*)ANativeWindow_acquire); } diff --git a/native/android/storage_manager.cpp b/native/android/storage_manager.cpp index f2f36b62..399f1ff 100644 --- a/native/android/storage_manager.cpp +++ b/native/android/storage_manager.cpp @@ -125,11 +125,20 @@ public: } } - void mountObb(const char* filename, const char* key, AStorageManager_obbCallbackFunc func, void* data) { + void mountObb(const char* rawPath, const char* key, AStorageManager_obbCallbackFunc func, + void* data) { + // Resolve path before sending to MountService + char canonicalPath[PATH_MAX]; + if (realpath(rawPath, canonicalPath) == NULL) { + ALOGE("mountObb failed to resolve path %s: %s", rawPath, strerror(errno)); + return; + } + ObbCallback* cb = registerObbCallback(func, data); - String16 filename16(filename); + String16 rawPath16(rawPath); + String16 canonicalPath16(canonicalPath); String16 key16(key); - mMountService->mountObb(filename16, key16, mObbActionListener, cb->nonce); + mMountService->mountObb(rawPath16, canonicalPath16, key16, mObbActionListener, cb->nonce); } void unmountObb(const char* filename, const bool force, AStorageManager_obbCallbackFunc func, void* data) { |