From 3ec1cec3b7cfaacee5db2d738e02e49b30319ac0 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Thu, 7 Oct 2010 14:38:12 -0700 Subject: [PATCH] Update NDK with recent changes. Includes bitmap.h which was missing from v9 but was previously in v8. Also includes new obb stuff and other things that have gotten out of sync. Change-Id: I6cf9ccdbc9d3271a34a1cf8a1de78aa8a1757276 --- .../android-9/arch-arm/lib/libandroid.so | Bin 56544 -> 60704 bytes .../android-9/include/android/bitmap.h | 79 ++++++++++++++++++ .../android-9/include/android/configuration.h | 4 +- .../android-9/include/android/input.h | 4 - .../android-9/include/android/looper.h | 11 ++- ndk/platforms/android-9/include/android/obb.h | 63 ++++++++++++++ .../include/android/storage_manager.h | 74 ++++++++++++++++ 7 files changed, 228 insertions(+), 7 deletions(-) create mode 100644 ndk/platforms/android-9/include/android/bitmap.h create mode 100644 ndk/platforms/android-9/include/android/obb.h create mode 100644 ndk/platforms/android-9/include/android/storage_manager.h diff --git a/ndk/platforms/android-9/arch-arm/lib/libandroid.so b/ndk/platforms/android-9/arch-arm/lib/libandroid.so index 51dfc3744098940902c3019803835192fee2afd9..e8afccdcb4f555e47e493398cdb6a554b619a238 100644 GIT binary patch literal 60704 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 +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define ANDROID_BITMAP_RESUT_SUCCESS 0 +#define ANDROID_BITMAP_RESULT_BAD_PARAMETER -1 +#define ANDROID_BITMAP_RESULT_JNI_EXCEPTION -2 +#define ANDROID_BITMAP_RESULT_ALLOCATION_FAILED -3 + +enum AndroidBitmapFormat { + ANDROID_BITMAP_FORMAT_NONE = 0, + ANDROID_BITMAP_FORMAT_RGBA_8888 = 1, + ANDROID_BITMAP_FORMAT_RGB_565 = 4, + ANDROID_BITMAP_FORMAT_RGBA_4444 = 7, + ANDROID_BITMAP_FORMAT_A_8 = 8, +}; + +typedef struct { + uint32_t width; + uint32_t height; + uint32_t stride; + int32_t format; + uint32_t flags; // 0 for now +} AndroidBitmapInfo; + +/** + * Given a java bitmap object, fill out the AndroidBitmap struct for it. + * If the call fails, the info parameter will be ignored + */ +int AndroidBitmap_getInfo(JNIEnv* env, jobject jbitmap, + AndroidBitmapInfo* info); + +/** + * Given a java bitmap object, attempt to lock the pixel address. + * Locking will ensure that the memory for the pixels will not move + * until the unlockPixels call, and ensure that, if the pixels had been + * previously purged, they will have been restored. + * + * If this call succeeds, it must be balanced by a call to + * AndroidBitmap_unlockPixels, after which time the address of the pixels should + * no longer be used. + * + * If this succeeds, *addrPtr will be set to the pixel address. If the call + * fails, addrPtr will be ignored. + */ +int AndroidBitmap_lockPixels(JNIEnv* env, jobject jbitmap, void** addrPtr); + +/** + * Call this to balanace a successful call to AndroidBitmap_lockPixels + */ +int AndroidBitmap_unlockPixels(JNIEnv* env, jobject jbitmap); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ndk/platforms/android-9/include/android/configuration.h b/ndk/platforms/android-9/include/android/configuration.h index 79b9b1e30..99e8f9711 100644 --- a/ndk/platforms/android-9/include/android/configuration.h +++ b/ndk/platforms/android-9/include/android/configuration.h @@ -79,8 +79,8 @@ enum { ACONFIGURATION_UI_MODE_TYPE_CAR = 0x03, ACONFIGURATION_UI_MODE_NIGHT_ANY = 0x00, - ACONFIGURATION_UI_MODE_NIGHT_NO = 0x10, - ACONFIGURATION_UI_MODE_NIGHT_YES = 0x20, + ACONFIGURATION_UI_MODE_NIGHT_NO = 0x1, + ACONFIGURATION_UI_MODE_NIGHT_YES = 0x2, ACONFIGURATION_MCC = 0x0001, ACONFIGURATION_MNC = 0x0002, diff --git a/ndk/platforms/android-9/include/android/input.h b/ndk/platforms/android-9/include/android/input.h index c1134bf8c..5580700db 100644 --- a/ndk/platforms/android-9/include/android/input.h +++ b/ndk/platforms/android-9/include/android/input.h @@ -295,7 +295,6 @@ enum { AINPUT_SOURCE_CLASS_POINTER = 0x00000002, AINPUT_SOURCE_CLASS_NAVIGATION = 0x00000004, AINPUT_SOURCE_CLASS_POSITION = 0x00000008, - AINPUT_SOURCE_CLASS_JOYSTICK = 0x00000010, }; enum { @@ -303,13 +302,10 @@ enum { AINPUT_SOURCE_KEYBOARD = 0x00000100 | AINPUT_SOURCE_CLASS_BUTTON, AINPUT_SOURCE_DPAD = 0x00000200 | AINPUT_SOURCE_CLASS_BUTTON, - AINPUT_SOURCE_GAMEPAD = 0x00000400 | AINPUT_SOURCE_CLASS_BUTTON, AINPUT_SOURCE_TOUCHSCREEN = 0x00001000 | AINPUT_SOURCE_CLASS_POINTER, AINPUT_SOURCE_MOUSE = 0x00002000 | AINPUT_SOURCE_CLASS_POINTER, AINPUT_SOURCE_TRACKBALL = 0x00010000 | AINPUT_SOURCE_CLASS_NAVIGATION, AINPUT_SOURCE_TOUCHPAD = 0x00100000 | AINPUT_SOURCE_CLASS_POSITION, - AINPUT_SOURCE_JOYSTICK_LEFT = 0x01000000 | AINPUT_SOURCE_CLASS_JOYSTICK, - AINPUT_SOURCE_JOYSTICK_RIGHT = 0x02000000 | AINPUT_SOURCE_CLASS_JOYSTICK, }; /* diff --git a/ndk/platforms/android-9/include/android/looper.h b/ndk/platforms/android-9/include/android/looper.h index 568d18fd1..a9d842690 100644 --- a/ndk/platforms/android-9/include/android/looper.h +++ b/ndk/platforms/android-9/include/android/looper.h @@ -135,6 +135,15 @@ enum { * to specify this event flag in the requested event set. */ ALOOPER_EVENT_HANGUP = 1 << 3, + + /** + * The file descriptor is invalid. + * For example, the file descriptor was closed prematurely. + * + * The looper always sends notifications about invalid file descriptors; it is not necessary + * to specify this event flag in the requested event set. + */ + ALOOPER_EVENT_INVALID = 1 << 4, }; /** @@ -217,7 +226,7 @@ void ALooper_wake(ALooper* looper); * This method can be called on any thread. * This method may block briefly if it needs to wake the poll. */ -void ALooper_addFd(ALooper* looper, int fd, int ident, int events, +int ALooper_addFd(ALooper* looper, int fd, int ident, int events, ALooper_callbackFunc callback, void* data); /** diff --git a/ndk/platforms/android-9/include/android/obb.h b/ndk/platforms/android-9/include/android/obb.h new file mode 100644 index 000000000..65e9b2aa1 --- /dev/null +++ b/ndk/platforms/android-9/include/android/obb.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef ANDROID_OBB_H +#define ANDROID_OBB_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct AObbInfo; +typedef struct AObbInfo AObbInfo; + +enum { + AOBBINFO_OVERLAY = 0x0001, +}; + +/** + * Scan an OBB and get information about it. + */ +AObbInfo* AObbScanner_getObbInfo(const char* filename); + +/** + * Destroy the AObbInfo object. You must call this when finished with the object. + */ +void AObbInfo_delete(AObbInfo* obbInfo); + +/** + * Get the package name for the OBB. + */ +const char* AObbInfo_getPackageName(AObbInfo* obbInfo); + +/** + * Get the version of an OBB file. + */ +int32_t AObbInfo_getVersion(AObbInfo* obbInfo); + +/** + * Get the flags of an OBB file. + */ +int32_t AObbInfo_getFlags(AObbInfo* obbInfo); + +#ifdef __cplusplus +}; +#endif + +#endif // ANDROID_OBB_H diff --git a/ndk/platforms/android-9/include/android/storage_manager.h b/ndk/platforms/android-9/include/android/storage_manager.h new file mode 100644 index 000000000..6f925c1ee --- /dev/null +++ b/ndk/platforms/android-9/include/android/storage_manager.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef ANDROID_STORAGE_MANAGER_H +#define ANDROID_STORAGE_MANAGER_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct AStorageManager; +typedef struct AStorageManager AStorageManager; + + +/** + * Obtains a new instance of AStorageManager. + */ +AStorageManager* AStorageManager_new(); + +/** + * Release AStorageManager instance. + */ +void AStorageManager_delete(AStorageManager* mgr); + +/** + * Callback function for asynchronous calls made on OBB files. + */ +typedef void (*AStorageManager_obbCallbackFunc)(const char* filename, const char* state, void* data); + +/** + * Callback to call when requested asynchronous OBB operation is complete. + */ +void AStorageManager_setObbCallback(AStorageManager* mgr, AStorageManager_obbCallbackFunc cb, void* data); + +/** + * Attempts to mount an OBB file. This is an asynchronous operation. + */ +void AStorageManager_mountObb(AStorageManager* mgr, const char* filename, const char* key); + +/** + * Attempts to unmount an OBB file. This is an asynchronous operation. + */ +void AStorageManager_unmountObb(AStorageManager* mgr, const char* filename, const int force); + +/** + * Check whether an OBB is mounted. + */ +int AStorageManager_isObbMounted(AStorageManager* mgr, const char* filename); + +/** + * Get the mounted path for an OBB. + */ +const char* AStorageManager_getMountedObbPath(AStorageManager* mgr, const char* filename); + + +#ifdef __cplusplus +}; +#endif + +#endif // ANDROID_STORAGE_MANAGER_H