From c0defaab4856354ee1794b7a1eedb4fd83d0fef0 Mon Sep 17 00:00:00 2001 From: Greg Rynkowski Date: Sat, 6 Aug 2016 10:04:34 +0100 Subject: [PATCH 1/2] Correct code style in Android main.cpp files - removed redundant headers (reduced dependencies) - removed redundant code - corrected code style --- .../proj.android/jni/hellocpp/main.cpp | 16 +++---- .../runtime-src/proj.android/jni/lua/main.cpp | 48 +++++++++---------- 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/samples/HelloPlugins/proj.android/jni/hellocpp/main.cpp b/samples/HelloPlugins/proj.android/jni/hellocpp/main.cpp index 32ccb21c..4cdfb048 100644 --- a/samples/HelloPlugins/proj.android/jni/hellocpp/main.cpp +++ b/samples/HelloPlugins/proj.android/jni/hellocpp/main.cpp @@ -1,19 +1,17 @@ -#include "AppDelegate.h" -#include "cocos2d.h" -#include "platform/android/jni/JniHelper.h" -#include #include -#include "PluginJniHelper.h" +#include + +#include "platform/android/PluginJniHelper.h" + +#include "AppDelegate.h" #define LOG_TAG "main" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) -using namespace cocos2d; - -void cocos_android_app_init (JNIEnv* env, jobject thiz) { +void cocos_android_app_init(JNIEnv* env) { LOGD("cocos_android_app_init"); AppDelegate *pAppDelegate = new AppDelegate(); JavaVM* vm; env->GetJavaVM(&vm); - PluginJniHelper::setJavaVM(vm); + cocos2d::PluginJniHelper::setJavaVM(vm); } diff --git a/samples/HelloPluginsLua/frameworks/runtime-src/proj.android/jni/lua/main.cpp b/samples/HelloPluginsLua/frameworks/runtime-src/proj.android/jni/lua/main.cpp index 64dfdc21..7c675c9c 100644 --- a/samples/HelloPluginsLua/frameworks/runtime-src/proj.android/jni/lua/main.cpp +++ b/samples/HelloPluginsLua/frameworks/runtime-src/proj.android/jni/lua/main.cpp @@ -1,17 +1,17 @@ -#include "AppDelegate.h" -#include "cocos2d.h" -#include "platform/android/jni/JniHelper.h" -#include #include +#include + +#include "platform/android/PluginJniHelper.h" + +#include "AppDelegate.h" #include "ConfigParser.h" -#include "PluginJniHelper.h" #define LOG_TAG "main" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) using namespace cocos2d; -void cocos_android_app_init (JNIEnv* env, jobject thiz) { +void cocos_android_app_init(JNIEnv* env) { LOGD("cocos_android_app_init"); AppDelegate *pAppDelegate = new AppDelegate(); JavaVM* vm; @@ -19,24 +19,24 @@ void cocos_android_app_init (JNIEnv* env, jobject thiz) { PluginJniHelper::setJavaVM(vm); } + extern "C" { - bool Java_org_cocos2dx_HelloPluginsLua_AppActivity_nativeIsLandScape(JNIEnv *env, jobject thisz) - { - if (!ConfigParser::getInstance()->isInit()) - { - ConfigParser::getInstance()->readConfig(); - } - return ConfigParser::getInstance()->isLanscape(); - } - - bool Java_org_cocos2dx_HelloPluginsLua_AppActivity_nativeIsDebug(JNIEnv *env, jobject thisz) - { - #ifdef NDEBUG - return false; - #else - return true; - #endif - } -} + bool Java_org_cocos2dx_HelloPluginsLua_AppActivity_nativeIsLandScape(JNIEnv *env, jobject thisz) + { + if (!ConfigParser::getInstance()->isInit()) + { + ConfigParser::getInstance()->readConfig(); + } + return ConfigParser::getInstance()->isLanscape(); + } + bool Java_org_cocos2dx_HelloPluginsLua_AppActivity_nativeIsDebug(JNIEnv *env, jobject thisz) + { + #ifdef NDEBUG + return false; + #else + return true; + #endif + } +} From 683f850bd7a32739910ce2b5e0f4024d46891714 Mon Sep 17 00:00:00 2001 From: Greg Rynkowski Date: Sat, 6 Aug 2016 10:03:52 +0100 Subject: [PATCH 2/2] Remove AppDelegate memory leak from Android projects AppDelegate object and all its members are never released. As a solution I propose to use static unique_ptr that could destroy it at the end of the application. Issue: https://github.com/cocos2d/cocos2d-x/issues/14110 --- samples/HelloPlugins/proj.android/jni/hellocpp/main.cpp | 8 +++++++- .../frameworks/runtime-src/proj.android/jni/lua/main.cpp | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/samples/HelloPlugins/proj.android/jni/hellocpp/main.cpp b/samples/HelloPlugins/proj.android/jni/hellocpp/main.cpp index 4cdfb048..e1cb42bc 100644 --- a/samples/HelloPlugins/proj.android/jni/hellocpp/main.cpp +++ b/samples/HelloPlugins/proj.android/jni/hellocpp/main.cpp @@ -1,3 +1,5 @@ +#include + #include #include @@ -8,9 +10,13 @@ #define LOG_TAG "main" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) +namespace { +std::unique_ptr appDelegate; +} + void cocos_android_app_init(JNIEnv* env) { LOGD("cocos_android_app_init"); - AppDelegate *pAppDelegate = new AppDelegate(); + appDelegate.reset(new AppDelegate()); JavaVM* vm; env->GetJavaVM(&vm); cocos2d::PluginJniHelper::setJavaVM(vm); diff --git a/samples/HelloPluginsLua/frameworks/runtime-src/proj.android/jni/lua/main.cpp b/samples/HelloPluginsLua/frameworks/runtime-src/proj.android/jni/lua/main.cpp index 7c675c9c..a6d47d65 100644 --- a/samples/HelloPluginsLua/frameworks/runtime-src/proj.android/jni/lua/main.cpp +++ b/samples/HelloPluginsLua/frameworks/runtime-src/proj.android/jni/lua/main.cpp @@ -1,3 +1,5 @@ +#include + #include #include @@ -11,9 +13,13 @@ using namespace cocos2d; +namespace { +std::unique_ptr appDelegate; +} + void cocos_android_app_init(JNIEnv* env) { LOGD("cocos_android_app_init"); - AppDelegate *pAppDelegate = new AppDelegate(); + appDelegate.reset(new AppDelegate()); JavaVM* vm; env->GetJavaVM(&vm); PluginJniHelper::setJavaVM(vm);