From e473f9eeb0233afcbd38de5de975dea4d131026d Mon Sep 17 00:00:00 2001
From: pans <pans@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期三, 16 八月 2017 15:26:27 +0800
Subject: [PATCH] fix Remote client bug

---
 VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp |   75 ++++++++++++++++++++++++-------------
 1 files changed, 49 insertions(+), 26 deletions(-)

diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp
index 32b79f4..6d52346 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/CameraWrapperClient.cpp
@@ -48,7 +48,13 @@
         running = false;
         return false;
     }
-
+    ret = pthread_create(&jni_call_thid, NULL, CameraWrapper::jni_call_thd, this);
+    if(ret != 0)
+    {
+        LOGP(ERROR, "pthread_create jni_call_thid: %s/n", strerror(ret));
+        running = false;
+        return false;
+    }
     return true;
 }
 
@@ -209,31 +215,8 @@
 
 void CameraWrapper::fireFaceCount(int faceCount)
 {
-    // double check it's all ok
-    LOG_ERROR <<"client fireFaceCount start!!!!!!!!"<< LOG_ENDL;
-    int getEnvStat = javaVM->GetEnv((void **)&(javaEnv), JNI_VERSION_1_6);
-    if (getEnvStat == JNI_EDETACHED)
-    {
-        //LOG_WARN << "GetEnv: not attached" << std::endl;
-        if (javaVM->AttachCurrentThread(&(javaEnv), NULL) != 0)
-            LOG_WARN << "Failed to attach" << LOG_ENDL;
-        else
-            getEnvStat = JNI_OK;
-    }
-    else if (getEnvStat == JNI_OK){
-    }
-    else if (getEnvStat == JNI_EVERSION)
-        LOG_WARN << "GetEnv: version not supported" << LOG_ENDL;
-    else if (getEnvStat == JNI_ERR)
-        LOG_WARN << "GetEnv: JNI_ERR" << LOG_ENDL;
-    LOG_ERROR <<"client fireFaceCount end!!!!!!!!!!!!"<< LOG_ENDL;
-
-    javaEnv->CallStaticVoidMethod(faceCallbackClazz, faceCallbackFunc, cameraIdx, faceCount);
-
-    if (javaEnv->ExceptionCheck())
-        javaEnv->ExceptionDescribe();
-
-    javaVM->DetachCurrentThread();
+    this->faceCount = faceCount;
+    this->faceCountChanged = true;
 }
 
 bool cw_pm_breaker_ptr_paint(const PipeMaterial* pm, void* args)
@@ -393,3 +376,43 @@
         }
     }
 }
+
+void *CameraWrapper::jni_call_thd(void *arg) {
+
+    CameraWrapper* cameraWrapper = (CameraWrapper*)arg;
+    while(cameraWrapper->running)
+    {
+        if(cameraWrapper->faceCountChanged){
+            // double check it's all ok
+            LOG_ERROR <<"client fireFaceCount start!!!!!!!!"<< LOG_ENDL;
+            int getEnvStat = cameraWrapper->javaVM->GetEnv((void **)&(cameraWrapper->javaEnv), JNI_VERSION_1_6);
+            if (getEnvStat == JNI_EDETACHED)
+            {
+                //LOG_WARN << "GetEnv: not attached" << std::endl;
+                if (cameraWrapper->javaVM->AttachCurrentThread(&(cameraWrapper->javaEnv), NULL) != 0)
+                    LOG_WARN << "Failed to attach" << LOG_ENDL;
+                else
+                    getEnvStat = JNI_OK;
+            }
+            else if (getEnvStat == JNI_OK){
+            }
+            else if (getEnvStat == JNI_EVERSION)
+                LOG_WARN << "GetEnv: version not supported" << LOG_ENDL;
+            else if (getEnvStat == JNI_ERR)
+                LOG_WARN << "GetEnv: JNI_ERR" << LOG_ENDL;
+            LOG_ERROR <<"client fireFaceCount end!!!!!!!!!!!!"<< LOG_ENDL;
+
+            cameraWrapper->javaEnv->CallStaticVoidMethod(cameraWrapper->faceCallbackClazz,
+                                                         cameraWrapper->faceCallbackFunc,
+                                                         cameraWrapper->cameraIdx,
+                                                         cameraWrapper->faceCount);
+
+            if (cameraWrapper->javaEnv->ExceptionCheck())
+                cameraWrapper->javaEnv->ExceptionDescribe();
+            cameraWrapper->javaVM->DetachCurrentThread();
+            cameraWrapper->faceCountChanged = false;
+        }
+        usleep(10000);
+    }
+
+}

--
Gitblit v1.8.0