[GitHub] incubator-weex pull request #1214: [WEEX-411][Core] Fix memory leak due to r...

2018-05-27 Thread asfgit
Github user asfgit closed the pull request at:

https://github.com/apache/incubator-weex/pull/1214


---


[2/2] incubator-weex git commit: [WEEX-411][Core] Fix memory leak due to return render time

2018-05-27 Thread kyork
[WEEX-411][Core] Fix memory leak due to return render time

This closes #1214


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/2e9c22b8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/2e9c22b8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/2e9c22b8

Branch: refs/heads/master
Commit: 2e9c22b842d9ff31115cca6c19838a00d1c1db3b
Parents: dd60f6f ffddb37
Author: YorkShen 
Authored: Mon May 28 10:50:56 2018 +0800
Committer: YorkShen 
Committed: Mon May 28 10:50:56 2018 +0800

--
 .../bridge/impl/weexcore_impl_android.cpp   | 58 
 1 file changed, 48 insertions(+), 10 deletions(-)
--




[1/2] incubator-weex git commit: [WEEX-411][Core] Fix memory leak due to return render time

2018-05-27 Thread kyork
Repository: incubator-weex
Updated Branches:
  refs/heads/master dd60f6fd7 -> 2e9c22b84


[WEEX-411][Core] Fix memory leak due to return render time


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/ffddb376
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/ffddb376
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/ffddb376

Branch: refs/heads/master
Commit: ffddb376eef6ccdca378cece481995af3e8e6e9a
Parents: 8838d6c
Author: miomin 
Authored: Sat May 26 23:08:07 2018 +0800
Committer: miomin 
Committed: Sat May 26 23:08:07 2018 +0800

--
 .../bridge/impl/weexcore_impl_android.cpp   | 58 
 1 file changed, 48 insertions(+), 10 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ffddb376/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
--
diff --git a/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp 
b/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
index 039174e..8e206ed 100644
--- a/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
@@ -38,6 +38,8 @@ jclass jWMBridgeClazz = nullptr;
 jmethodID jDoubleValueMethodId;
 jobject jThis;
 jobject jWMThis;
+jlongArray jFirstScreenRenderTime = nullptr;
+jlongArray jRenderFinishTime = nullptr;
 std::map componentTypeCache;
 
 JStringCache refCache(2048);
@@ -139,11 +141,17 @@ static void SetRenderContainerWrapContent(JNIEnv* env, 
jobject jcaller, jboolean
 }
 
 static jlongArray GetFirstScreenRenderTime(JNIEnv *env, jobject jcaller, 
jstring instanceId) {
-  jlongArray jRet = env->NewLongArray(3);
+  jlongArray jTemp = env->NewLongArray(3);
 
   RenderPage *page = 
RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
-  if (page == nullptr)
-return jRet;
+  if (page == nullptr) {
+if (jFirstScreenRenderTime != nullptr) {
+  env->DeleteGlobalRef(jFirstScreenRenderTime);
+  jFirstScreenRenderTime = nullptr;
+}
+jFirstScreenRenderTime = static_cast(env->NewGlobalRef(jTemp));
+return jFirstScreenRenderTime;
+  }
 
   std::vector temp = page->PrintFirstScreenLog();
 
@@ -152,17 +160,30 @@ static jlongArray GetFirstScreenRenderTime(JNIEnv *env, 
jobject jcaller, jstring
   ret[0] = temp[0];
   ret[1] = temp[1];
   ret[2] = temp[2];
-  env->SetLongArrayRegion(jRet, 0, 3, ret);
+  env->SetLongArrayRegion(jTemp, 0, 3, ret);
 
-  return jRet;
+  if (jFirstScreenRenderTime != nullptr) {
+env->DeleteGlobalRef(jFirstScreenRenderTime);
+jFirstScreenRenderTime = nullptr;
+  }
+  jFirstScreenRenderTime = static_cast(env->NewGlobalRef(jTemp));
+
+  env->DeleteLocalRef(jTemp);
+  return jFirstScreenRenderTime;
 }
 
 static jlongArray GetRenderFinishTime(JNIEnv *env, jobject jcaller, jstring 
instanceId) {
-  jlongArray jRet = env->NewLongArray(3);
+  jlongArray jTemp = env->NewLongArray(3);
 
   RenderPage *page = 
RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
-  if (page == nullptr)
-return 0;
+  if (page == nullptr) {
+if (jRenderFinishTime != nullptr) {
+  env->DeleteGlobalRef(jRenderFinishTime);
+  jRenderFinishTime = nullptr;
+}
+jRenderFinishTime = static_cast(env->NewGlobalRef(jTemp));
+return jRenderFinishTime;
+  }
 
   std::vector temp = page->PrintRenderSuccessLog();
 
@@ -171,9 +192,16 @@ static jlongArray GetRenderFinishTime(JNIEnv *env, jobject 
jcaller, jstring inst
   ret[0] = temp[0];
   ret[1] = temp[1];
   ret[2] = temp[2];
-  env->SetLongArrayRegion(jRet, 0, 3, ret);
+  env->SetLongArrayRegion(jTemp, 0, 3, ret);
+
+  if (jRenderFinishTime != nullptr) {
+env->DeleteGlobalRef(jRenderFinishTime);
+jRenderFinishTime = nullptr;
+  }
+  jRenderFinishTime = static_cast(env->NewGlobalRef(jTemp));
 
-  return jRet;
+  env->DeleteLocalRef(jTemp);
+  return jRenderFinishTime;
 }
 
 //Notice that this method is invoked from main thread.
@@ -547,6 +575,16 @@ jint OnLoad(JavaVM *vm, void *reserved) {
 env->DeleteGlobalRef(jWXLogUtils);
 env->DeleteGlobalRef(jMapClazz);
 
+if (jFirstScreenRenderTime != nullptr) {
+  env->DeleteLocalRef(jFirstScreenRenderTime);
+  jFirstScreenRenderTime = nullptr;
+}
+
+if (jRenderFinishTime != nullptr) {
+  env->DeleteLocalRef(jRenderFinishTime);
+  jRenderFinishTime = nullptr;
+}
+
 for (auto iter = componentTypeCache.begin(); iter != 
componentTypeCache.end(); iter++) {
   if (iter->second != nullptr) {
 env->DeleteGlobalRef(iter->second);



[GitHub] incubator-weex pull request #1215: [WEEX-386] Fix waterfall updateAttr

2018-05-27 Thread asfgit
Github user asfgit closed the pull request at:

https://github.com/apache/incubator-weex/pull/1215


---


incubator-weex git commit: [WEEX-386] Fix waterfall updateAttr

2018-05-27 Thread kyork
Repository: incubator-weex
Updated Branches:
  refs/heads/master ad1d9b4f9 -> dd60f6fd7


[WEEX-386] Fix waterfall updateAttr


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/dd60f6fd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/dd60f6fd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/dd60f6fd

Branch: refs/heads/master
Commit: dd60f6fd7f90a86c5706a0c18e579f465d4e757f
Parents: ad1d9b4
Author: miomin 
Authored: Thu May 24 19:19:25 2018 +0800
Committer: miomin 
Committed: Sun May 27 00:24:35 2018 +0800

--
 weex_core/Source/core/render/node/render_list.h | 36 ++--
 .../Source/core/render/page/render_page.cpp | 17 +
 weex_core/Source/core/render/page/render_page.h |  2 ++
 3 files changed, 37 insertions(+), 18 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dd60f6fd/weex_core/Source/core/render/node/render_list.h
--
diff --git a/weex_core/Source/core/render/node/render_list.h 
b/weex_core/Source/core/render/node/render_list.h
index 2cb0897..ab22409 100644
--- a/weex_core/Source/core/render/node/render_list.h
+++ b/weex_core/Source/core/render/node/render_list.h
@@ -117,13 +117,13 @@ namespace WeexCore {
 
 std::map *GetDefaultAttr() {
   if (!mIsPreCalculateCellWidth) {
-return preCalculateCellWidth();
+preCalculateCellWidth();
   }
   return nullptr;
 }
 
 
-std::map *preCalculateCellWidth() {
+inline void preCalculateCellWidth() {
 std::map *attrs = new std::map();
 if (Attributes() != nullptr) {
 mColumnCount = getColumnCount();
@@ -170,8 +170,22 @@ namespace WeexCore {
 if (spanOffsets.length() > 0) {
 attrs->insert(std::pair(SPAN_OFFSETS, to_string(spanOffsets)));
 }
+
+for (auto iter = attrs->cbegin(); iter != attrs->cend(); iter++) {
+  RenderObject::UpdateAttr(iter->first, iter->second);
+}
 }
-return attrs;
+
+  RenderPage *page = GetRenderPage();
+
+  if (page != nullptr)
+page->SendUpdateAttrAction(this, attrs);
+
+  if (attrs != nullptr) {
+attrs->clear();
+delete attrs;
+attrs = nullptr;
+  }
 }
 
 std::string calcSpanOffset() {
@@ -239,25 +253,11 @@ namespace WeexCore {
 }
 }
 
-void UpdatePreCalculateCellAttrs(std::map * 
attrs){
-if (attrs == nullptr){
-return;
-}
-
-for (auto iter = attrs->cbegin(); iter != attrs->cend(); iter++) {
-RenderObject::UpdateAttr(iter->first, iter->second);
-}
-if (attrs != nullptr) {
-delete attrs;
-attrs = nullptr;
-}
-}
-
 void UpdateAttr(std::string key, std::string value) {
   RenderObject::UpdateAttr(key, value);
 
   if(!GetAttr(COLUMN_COUNT).empty() || !GetAttr(COLUMN_GAP).empty() || 
!GetAttr(COLUMN_WIDTH).empty()){
-  UpdatePreCalculateCellAttrs(preCalculateCellWidth());
+  preCalculateCellWidth();
 
 if(mColumnWidth == 0 && isnan(mColumnWidth)) {
   return;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/dd60f6fd/weex_core/Source/core/render/page/render_page.cpp
--
diff --git a/weex_core/Source/core/render/page/render_page.cpp 
b/weex_core/Source/core/render/page/render_page.cpp
index 5575692..592b35f 100644
--- a/weex_core/Source/core/render/page/render_page.cpp
+++ b/weex_core/Source/core/render/page/render_page.cpp
@@ -557,6 +557,23 @@ namespace WeexCore {
 PostRenderAction(action);
   }
 
+  void RenderPage::SendUpdateAttrAction(RenderObject *render,
+std::map 
*attrs) {
+std::vector> *vAttrs = new 
std::vector>();
+for (auto iter = attrs->cbegin(); iter != attrs->cend(); iter++) {
+  vAttrs->insert(vAttrs->begin(), std::pair(iter->first, iter->second));
+}
+
+render_action *action = new RenderActionUpdateAttr(PageId(), 
render->Ref(), vAttrs);
+PostRenderAction(action);
+
+if (vAttrs != nullptr) {
+  vAttrs->clear();
+  delete vAttrs;
+  vAttrs = nullptr;
+}
+  }
+
   void RenderPage::SendCreateFinishAction() {
 render_action *action = new RenderActionCreateFinish(PageId());
 

[GitHub] incubator-weex pull request #1175: [WEEX-363][Android] Fix callNativeModule ...

2018-05-27 Thread Kelvin-May
Github user Kelvin-May closed the pull request at:

https://github.com/apache/incubator-weex/pull/1175


---


[GitHub] incubator-weex issue #1175: [WEEX-363][Android] Fix callNativeModule argumen...

2018-05-27 Thread gubaojian
Github user gubaojian commented on the issue:

https://github.com/apache/incubator-weex/pull/1175
  
please rebase new code, then do the update


---