diff options
Diffstat (limited to 'platform/android')
| -rw-r--r-- | platform/android/build.gradle.template | 8 | ||||
| -rw-r--r-- | platform/android/detect.py | 2 | ||||
| -rw-r--r-- | platform/android/export/export.cpp | 6 | ||||
| -rw-r--r-- | platform/android/java/gradle/wrapper/gradle-wrapper.properties | 5 | ||||
| -rw-r--r-- | platform/android/java/res/drawable/icon.png | bin | 12675 -> 11155 bytes | |||
| -rw-r--r-- | platform/android/java/src/com/android/vending/licensing/ILicenseResultListener.java | 16 | ||||
| -rw-r--r-- | platform/android/java/src/com/android/vending/licensing/ILicensingService.java | 16 | ||||
| -rw-r--r-- | platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java | 4 | ||||
| -rw-r--r-- | platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java | 47 | ||||
| -rw-r--r-- | platform/android/java_glue.cpp | 31 | ||||
| -rw-r--r-- | platform/android/os_android.cpp | 140 | ||||
| -rw-r--r-- | platform/android/os_android.h | 2 | ||||
| -rw-r--r-- | platform/android/power_android.cpp | 27 |
13 files changed, 169 insertions, 135 deletions
diff --git a/platform/android/build.gradle.template b/platform/android/build.gradle.template index 8dfb006c0..fd0907f82 100644 --- a/platform/android/build.gradle.template +++ b/platform/android/build.gradle.template @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' + classpath 'com.android.tools.build:gradle:2.3.1' $$GRADLE_CLASSPATH$$ } } @@ -31,7 +31,7 @@ android { } compileSdkVersion 23 - buildToolsVersion "23.0.3" + buildToolsVersion "25.0.3" useLibrary 'org.apache.http.legacy' packagingOptions { @@ -56,7 +56,6 @@ android { 'res' $$GRADLE_RES_DIRS$$ ] - // libs.srcDirs = ['libs'] aidl.srcDirs = [ 'aidl' $$GRADLE_AIDL_DIRS$$ @@ -65,9 +64,6 @@ android { 'assets' $$GRADLE_ASSET_DIRS$$ ] - jniLibs.srcDirs = [ - $$GRADLE_JNI_DIRS$$ - ] } debug.jniLibs.srcDirs = [ 'libs/debug' diff --git a/platform/android/detect.py b/platform/android/detect.py index 8d2ed59f1..ce44ffbf7 100644 --- a/platform/android/detect.py +++ b/platform/android/detect.py @@ -232,7 +232,7 @@ def configure(env): elif (env["target"] == "debug"): env.Append(LINKFLAGS=['-O0']) env.Append(CPPFLAGS=['-O0', '-D_DEBUG', '-UNDEBUG', '-DDEBUG_ENABLED', - '-DDEBUG_MEMORY_ALLOC', '-g', '-fno-limit-debug-info']) + '-DDEBUG_MEMORY_ENABLED', '-g', '-fno-limit-debug-info']) env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED', '-DNO_FCNTL', '-DMPC_FIXED_POINT']) diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index 72d665329..51597526a 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -1714,7 +1714,7 @@ Error EditorExportPlatformAndroid::run(int p_device, int p_flags) { args.push_back("--remove-all"); err = OS::get_singleton()->execute(adb,args,true,NULL,NULL,&rv); - int port = GlobalConfig::get_singleton()->get("network/debug/remote_port"); + int port = (int)EditorSettings::get_singleton()->get("network/debug/remote_port"); args.clear(); args.push_back("reverse"); args.push_back("tcp:"+itos(port)); @@ -2993,7 +2993,7 @@ public: args.push_back("--remove-all"); err = OS::get_singleton()->execute(adb, args, true, NULL, NULL, &rv); - int port = GlobalConfig::get_singleton()->get("network/debug/remote_port"); + int port = (int)EditorSettings::get_singleton()->get("network/debug/remote_port"); args.clear(); args.push_back("reverse"); args.push_back("tcp:" + itos(port)); @@ -3523,7 +3523,7 @@ public: EditorExportAndroid() { - Image img(_android_logo); + Ref<Image> img = memnew(Image(_android_logo)); logo = Ref<ImageTexture>(memnew(ImageTexture)); logo->create_from_image(img); diff --git a/platform/android/java/gradle/wrapper/gradle-wrapper.properties b/platform/android/java/gradle/wrapper/gradle-wrapper.properties index d57051703..a11cc1b82 100644 --- a/platform/android/java/gradle/wrapper/gradle-wrapper.properties +++ b/platform/android/java/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ -#Wed Apr 10 15:27:10 PDT 2013 +#Fri May 12 08:50:03 KST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip +org.gradle.jvmargs=-Xmx1536M diff --git a/platform/android/java/res/drawable/icon.png b/platform/android/java/res/drawable/icon.png Binary files differindex a0a0f4af2..29c4a7b8f 100644 --- a/platform/android/java/res/drawable/icon.png +++ b/platform/android/java/res/drawable/icon.png diff --git a/platform/android/java/src/com/android/vending/licensing/ILicenseResultListener.java b/platform/android/java/src/com/android/vending/licensing/ILicenseResultListener.java index d90d6eac7..63720999a 100644 --- a/platform/android/java/src/com/android/vending/licensing/ILicenseResultListener.java +++ b/platform/android/java/src/com/android/vending/licensing/ILicenseResultListener.java @@ -1,4 +1,20 @@ /* + * 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. +*/ + +/* * This file is auto-generated. DO NOT MODIFY. * Original file: aidl/ILicenseResultListener.aidl */ diff --git a/platform/android/java/src/com/android/vending/licensing/ILicensingService.java b/platform/android/java/src/com/android/vending/licensing/ILicensingService.java index 95599544e..36afc0537 100644 --- a/platform/android/java/src/com/android/vending/licensing/ILicensingService.java +++ b/platform/android/java/src/com/android/vending/licensing/ILicensingService.java @@ -1,4 +1,20 @@ /* + * 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. +*/ + +/* * This file is auto-generated. DO NOT MODIFY. * Original file: aidl/ILicensingService.aidl */ diff --git a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java index 627bf3eed..e83faa275 100644 --- a/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java +++ b/platform/android/java/src/com/google/android/vending/expansion/downloader/impl/DownloaderService.java @@ -569,10 +569,10 @@ public abstract class DownloaderService extends CustomIntentService implements I */ void pollNetworkState() { if (null == mConnectivityManager) { - mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); + mConnectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); } if (null == mWifiManager) { - mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); + mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); } if (mConnectivityManager == null) { Log.w(Constants.TAG, diff --git a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java index 044efba1f..6f308af36 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java +++ b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java @@ -355,36 +355,35 @@ public class PaymentsManager { tempList.add(s); } packs.add(tempList); - - for (ArrayList<String> skuPartList : packs) { - Bundle querySkus = new Bundle(); - querySkus.putStringArrayList("ITEM_ID_LIST", skuPartList); - Bundle skuDetails = null; - try { - skuDetails = mService.getSkuDetails(3, activity.getPackageName(), "inapp", querySkus); - if (!skuDetails.containsKey("DETAILS_LIST")) { - int response = getResponseCodeFromBundle(skuDetails); - if (response != BILLING_RESPONSE_RESULT_OK) { - godotPaymentV3.errorSkuDetail(getResponseDesc(response)); - } else { - godotPaymentV3.errorSkuDetail("No error but no detail list."); - } - return; + } + for (ArrayList<String> skuPartList : packs) { + Bundle querySkus = new Bundle(); + querySkus.putStringArrayList("ITEM_ID_LIST", skuPartList); + Bundle skuDetails = null; + try { + skuDetails = mService.getSkuDetails(3, activity.getPackageName(), "inapp", querySkus); + if (!skuDetails.containsKey("DETAILS_LIST")) { + int response = getResponseCodeFromBundle(skuDetails); + if (response != BILLING_RESPONSE_RESULT_OK) { + godotPaymentV3.errorSkuDetail(getResponseDesc(response)); + } else { + godotPaymentV3.errorSkuDetail("No error but no detail list."); } + return; + } - ArrayList<String> responseList = skuDetails.getStringArrayList("DETAILS_LIST"); + ArrayList<String> responseList = skuDetails.getStringArrayList("DETAILS_LIST"); - for (String thisResponse : responseList) { - Log.d("godot", "response = "+thisResponse); - godotPaymentV3.addSkuDetail(thisResponse); - } - } catch (RemoteException e) { - e.printStackTrace(); - godotPaymentV3.errorSkuDetail("RemoteException error!"); + for (String thisResponse : responseList) { + Log.d("godot", "response = "+thisResponse); + godotPaymentV3.addSkuDetail(thisResponse); } + } catch (RemoteException e) { + e.printStackTrace(); + godotPaymentV3.errorSkuDetail("RemoteException error!"); } - godotPaymentV3.completeSkuDetail(); } + godotPaymentV3.completeSkuDetail(); } })).start(); } diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp index 6882dad4f..d4bd44368 100644 --- a/platform/android/java_glue.cpp +++ b/platform/android/java_glue.cpp @@ -610,7 +610,7 @@ struct JAndroidPointerEvent { }; static List<JAndroidPointerEvent> pointer_events; -static List<InputEvent> key_events; +static List<Ref<InputEvent> > key_events; static List<OS_Android::JoypadEvent> joy_events; static bool initialized = false; static Mutex *input_mutex = NULL; @@ -1036,7 +1036,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env, job while (key_events.size()) { - InputEvent event = key_events.front()->get(); + Ref<InputEvent> event = key_events.front()->get(); os_android->process_event(event); key_events.pop_front(); @@ -1419,30 +1419,23 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_joyconnectionchanged( JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_key(JNIEnv *env, jobject obj, jint p_scancode, jint p_unicode_char, jboolean p_pressed) { - InputEvent ievent; - ievent.type = InputEvent::KEY; - ievent.device = 0; + Ref<InputEventKey> ievent; int val = p_unicode_char; int scancode = android_get_keysym(p_scancode); - ievent.key.scancode = scancode; - ievent.key.unicode = val; - ievent.key.pressed = p_pressed; + ievent->set_scancode(scancode); + ievent->set_unicode(val); + ievent->set_pressed(p_pressed); - print_line("Scancode: " + String::num(p_scancode) + ":" + String::num(ievent.key.scancode) + " Unicode: " + String::num(val)); - - ievent.key.mod.shift = false; - ievent.key.mod.alt = false; - ievent.key.mod.control = false; - ievent.key.echo = false; + print_line("Scancode: " + String::num(p_scancode) + ":" + String::num(ievent->get_scancode()) + " Unicode: " + String::num(val)); if (val == '\n') { - ievent.key.scancode = KEY_ENTER; + ievent->set_scancode(KEY_ENTER); } else if (val == 61448) { - ievent.key.scancode = KEY_BACKSPACE; - ievent.key.unicode = KEY_BACKSPACE; + ievent->set_scancode(KEY_BACKSPACE); + ievent->set_unicode(KEY_BACKSPACE); } else if (val == 61453) { - ievent.key.scancode = KEY_ENTER; - ievent.key.unicode = KEY_ENTER; + ievent->set_scancode(KEY_ENTER); + ievent->set_unicode(KEY_ENTER); } else if (p_scancode == 4) { go_back_request = true; diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp index 6772964c2..9010b9e7d 100644 --- a/platform/android/os_android.cpp +++ b/platform/android/os_android.cpp @@ -360,7 +360,7 @@ void OS_Android::process_joy_event(OS_Android::JoypadEvent p_event) { } } -void OS_Android::process_event(InputEvent p_event) { +void OS_Android::process_event(Ref<InputEvent> p_event) { input->parse_input_event(p_event); } @@ -374,25 +374,24 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> if (touch.size()) { //end all if exist - InputEvent ev; - ev.type = InputEvent::MOUSE_BUTTON; - ev.mouse_button.button_index = BUTTON_LEFT; - ev.mouse_button.button_mask = BUTTON_MASK_LEFT; - ev.mouse_button.pressed = false; - ev.mouse_button.x = touch[0].pos.x; - ev.mouse_button.y = touch[0].pos.y; - ev.mouse_button.global_x = touch[0].pos.x; - ev.mouse_button.global_y = touch[0].pos.y; - input->parse_input_event(ev); + { + Ref<InputEventMouseButton> ev; + ev.instance(); + ev->set_button_index(BUTTON_LEFT); + ev->set_button_mask(BUTTON_MASK_LEFT); + ev->set_pressed(false); + ev->set_position(touch[0].pos); + ev->set_global_position(touch[0].pos); + input->parse_input_event(ev); + } for (int i = 0; i < touch.size(); i++) { - InputEvent ev; - ev.type = InputEvent::SCREEN_TOUCH; - ev.screen_touch.index = touch[i].id; - ev.screen_touch.pressed = false; - ev.screen_touch.x = touch[i].pos.x; - ev.screen_touch.y = touch[i].pos.y; + Ref<InputEventScreenTouch> ev; + ev.instance(); + ev->set_index(touch[i].id); + ev->set_pressed(false); + ev->set_position(touch[i].pos); input->parse_input_event(ev); } } @@ -405,15 +404,14 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> { //send mouse - InputEvent ev; - ev.type = InputEvent::MOUSE_BUTTON; - ev.mouse_button.button_index = BUTTON_LEFT; - ev.mouse_button.button_mask = BUTTON_MASK_LEFT; - ev.mouse_button.pressed = true; - ev.mouse_button.x = touch[0].pos.x; - ev.mouse_button.y = touch[0].pos.y; - ev.mouse_button.global_x = touch[0].pos.x; - ev.mouse_button.global_y = touch[0].pos.y; + Ref<InputEventMouseButton> ev; + ev.instance(); + // ev.type = Ref<InputEvent>::MOUSE_BUTTON; + ev->set_button_index(BUTTON_LEFT); + ev->set_button_mask(BUTTON_MASK_LEFT); + ev->set_pressed(true); + ev->set_position(touch[0].pos); + ev->set_global_position(touch[0].pos); input->set_mouse_position(Point2(touch[0].pos.x, touch[0].pos.y)); last_mouse = touch[0].pos; input->parse_input_event(ev); @@ -422,12 +420,11 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> //send touch for (int i = 0; i < touch.size(); i++) { - InputEvent ev; - ev.type = InputEvent::SCREEN_TOUCH; - ev.screen_touch.index = touch[i].id; - ev.screen_touch.pressed = true; - ev.screen_touch.x = touch[i].pos.x; - ev.screen_touch.y = touch[i].pos.y; + Ref<InputEventScreenTouch> ev; + ev.instance(); + ev->set_index(touch[i].id); + ev->set_pressed(true); + ev->set_position(touch[i].pos); input->parse_input_event(ev); } @@ -436,16 +433,13 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> if (p_points.size()) { //send mouse, should look for point 0? - InputEvent ev; - ev.type = InputEvent::MOUSE_MOTION; - ev.mouse_motion.button_mask = BUTTON_MASK_LEFT; - ev.mouse_motion.x = p_points[0].pos.x; - ev.mouse_motion.y = p_points[0].pos.y; - input->set_mouse_position(Point2(ev.mouse_motion.x, ev.mouse_motion.y)); - ev.mouse_motion.speed_x = input->get_last_mouse_speed().x; - ev.mouse_motion.speed_y = input->get_last_mouse_speed().y; - ev.mouse_motion.relative_x = p_points[0].pos.x - last_mouse.x; - ev.mouse_motion.relative_y = p_points[0].pos.y - last_mouse.y; + Ref<InputEventMouseMotion> ev; + ev.instance(); + ev->set_button_mask(BUTTON_MASK_LEFT); + ev->set_position(p_points[0].pos); + input->set_mouse_position(Point2(ev->get_position().x, ev->get_position().y)); + ev->set_speed(input->get_last_mouse_speed()); + ev->set_relative(p_points[0].pos - last_mouse); last_mouse = p_points[0].pos; input->parse_input_event(ev); } @@ -468,13 +462,11 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> if (touch[i].pos == p_points[idx].pos) continue; //no move unncesearily - InputEvent ev; - ev.type = InputEvent::SCREEN_DRAG; - ev.screen_drag.index = touch[i].id; - ev.screen_drag.x = p_points[idx].pos.x; - ev.screen_drag.y = p_points[idx].pos.y; - ev.screen_drag.relative_x = p_points[idx].pos.x - touch[i].pos.x; - ev.screen_drag.relative_y = p_points[idx].pos.y - touch[i].pos.y; + Ref<InputEventScreenDrag> ev; + ev.instance(); + ev->set_index(touch[i].id); + ev->set_position(p_points[idx].pos); + ev->set_relative(p_points[idx].pos - touch[i].pos); input->parse_input_event(ev); touch[i].pos = p_points[idx].pos; } @@ -484,26 +476,23 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> if (touch.size()) { //end all if exist - InputEvent ev; - ev.type = InputEvent::MOUSE_BUTTON; - ev.mouse_button.button_index = BUTTON_LEFT; - ev.mouse_button.button_mask = BUTTON_MASK_LEFT; - ev.mouse_button.pressed = false; - ev.mouse_button.x = touch[0].pos.x; - ev.mouse_button.y = touch[0].pos.y; - ev.mouse_button.global_x = touch[0].pos.x; - ev.mouse_button.global_y = touch[0].pos.y; + Ref<InputEventMouseButton> ev; + ev.instance(); + ev->set_button_index(BUTTON_LEFT); + ev->set_button_mask(BUTTON_MASK_LEFT); + ev->set_pressed(false); + ev->set_position(touch[0].pos); + ev->set_global_position(touch[0].pos); input->set_mouse_position(Point2(touch[0].pos.x, touch[0].pos.y)); input->parse_input_event(ev); for (int i = 0; i < touch.size(); i++) { - InputEvent ev; - ev.type = InputEvent::SCREEN_TOUCH; - ev.screen_touch.index = touch[i].id; - ev.screen_touch.pressed = false; - ev.screen_touch.x = touch[i].pos.x; - ev.screen_touch.y = touch[i].pos.y; + Ref<InputEventScreenTouch> ev; + ev.instance(); + ev->set_index(touch[i].id); + ev->set_pressed(false); + ev->set_position(touch[i].pos); input->parse_input_event(ev); } touch.clear(); @@ -517,12 +506,12 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> TouchPos tp = p_points[p_pointer]; touch.push_back(tp); - InputEvent ev; - ev.type = InputEvent::SCREEN_TOUCH; - ev.screen_touch.index = tp.id; - ev.screen_touch.pressed = true; - ev.screen_touch.x = tp.pos.x; - ev.screen_touch.y = tp.pos.y; + Ref<InputEventScreenTouch> ev; + ev.instance(); + + ev->set_index(tp.id); + ev->set_pressed(true); + ev->set_position(tp.pos); input->parse_input_event(ev); } break; @@ -531,12 +520,11 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> for (int i = 0; i < touch.size(); i++) { if (touch[i].id == p_pointer) { - InputEvent ev; - ev.type = InputEvent::SCREEN_TOUCH; - ev.screen_touch.index = touch[i].id; - ev.screen_touch.pressed = false; - ev.screen_touch.x = touch[i].pos.x; - ev.screen_touch.y = touch[i].pos.y; + Ref<InputEventScreenTouch> ev; + ev.instance(); + ev->set_index(touch[i].id); + ev->set_pressed(false); + ev->set_position(touch[i].pos); input->parse_input_event(ev); touch.remove(i); i--; diff --git a/platform/android/os_android.h b/platform/android/os_android.h index f1da2867f..897c71a7d 100644 --- a/platform/android/os_android.h +++ b/platform/android/os_android.h @@ -231,7 +231,7 @@ public: void process_gyroscope(const Vector3 &p_gyroscope); void process_touch(int p_what, int p_pointer, const Vector<TouchPos> &p_points); void process_joy_event(JoypadEvent p_event); - void process_event(InputEvent p_event); + void process_event(Ref<InputEvent> p_event); void init_video_mode(int p_video_width, int p_video_height); virtual Error native_video_play(String p_path, float p_volume); diff --git a/platform/android/power_android.cpp b/platform/android/power_android.cpp index 57977dd4b..bb5a1db25 100644 --- a/platform/android/power_android.cpp +++ b/platform/android/power_android.cpp @@ -28,10 +28,35 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#include "core/error_macros.h" +/* +Adapted from corresponding SDL 2.0 code. +*/ + +/* + Simple DirectMedia Layer + Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ #include "power_android.h" +#include "core/error_macros.h" + static void LocalReferenceHolder_Cleanup(struct LocalReferenceHolder *refholder) { if (refholder->m_env) { JNIEnv *env = refholder->m_env; |
