/** * \brief Set delegate. * \param env JNI environment * \param obj object * \param ptr native pointer on DSCaptureDevice * \param delegate delegate object */ JNIEXPORT void JNICALL Java_net_java_sip_communicator_impl_neomedia_directshow_DSCaptureDevice_setDelegate (JNIEnv* env, jobject obj, jlong ptr, jobject delegate) { Grabber* grab = NULL; DSCaptureDevice* dev = reinterpret_cast<DSCaptureDevice*>(ptr); DSGrabberCallback* prev = dev->getCallback(); if(delegate != NULL) { delegate = env->NewGlobalRef(delegate); if(delegate) { JavaVM* vm = NULL; /* get JavaVM */ env->GetJavaVM(&vm); grab = new Grabber(vm, delegate, dev); dev->setCallback(grab); } } else { dev->setCallback(NULL); } if(prev) { jobject tmp_delegate = ((Grabber*)prev)->m_delegate; if(tmp_delegate) { env->DeleteGlobalRef(tmp_delegate); } delete prev; } }
/** * \brief Set delegate. * \param env JNI environment * \param obj object * \param ptr native pointer on DSCaptureDevice * \param delegate delegate object */ JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_jmfext_media_protocol_directshow_DSCaptureDevice_setDelegate (JNIEnv* env, jobject obj, jlong ptr, jobject delegate) { SampleGrabberCB* grab = NULL; DSCaptureDevice* dev = reinterpret_cast<DSCaptureDevice*>(ptr); BasicSampleGrabberCB* prev = dev->getCallback(); if(delegate != NULL) { delegate = env->NewGlobalRef(delegate); if(delegate) { JavaVM* vm = NULL; /* get JavaVM */ env->GetJavaVM(&vm); grab = new SampleGrabberCB(vm, delegate, dev); dev->setCallback(grab); } } else { dev->setCallback(NULL); } if(prev) { jobject tmp_delegate = ((SampleGrabberCB *) prev)->_delegate; if(tmp_delegate) env->DeleteGlobalRef(tmp_delegate); delete prev; } }