예제 #1
0
static void newJavaGD_Mode(int mode, NewDevDesc *dd)
{
    newJavaGDDesc *xd = (newJavaGDDesc *) dd->deviceSpecific;
    JNIEnv *env = getJNIEnv();
    
    if(!env || !xd || !xd->talk) return;
	
	(*env)->CallVoidMethod(env, xd->talk, jmGDInterfaceMode, mode);
	chkX(env);
}
예제 #2
0
static void newJavaGD_Clip(double x0, double x1, double y0, double y1,  NewDevDesc *dd)
{
    newJavaGDDesc *xd = (newJavaGDDesc *) dd->deviceSpecific;
    JNIEnv *env = getJNIEnv();
    
    if(!env || !xd || !xd->talk) return;
	
	(*env)->CallVoidMethod(env, xd->talk, jmGDInterfaceClip, x0, x1, y0, y1);
	chkX(env);
}
예제 #3
0
int gcWrapper(lua_State* L) {
	jobject* pObj = (jobject*) lua_touserdata(L, 1);
	JNIEnv* javaEnv = getJNIEnv(L);
	if (javaEnv == NULL) {
		lua_pushstring(L, "Invalid JNI Environment.");
		lua_error(L);
	}
	(*javaEnv)->DeleteGlobalRef(javaEnv, *pObj);
	return 0;
}
예제 #4
0
jobject JPJavaEnv::NewDirectByteBuffer(void* address, jlong capacity)
{
	TRACE_IN("JPJavaEnv::NewDirectByteBuffer");
	JNIEnv* env = getJNIEnv(); 
    jobject res = env->functions->NewDirectByteBuffer(env, address, capacity);
    JAVA_CHECK("NewDirectByteBuffer");
	TRACE1((long)res);
    return res;	
	TRACE_OUT;
}
예제 #5
0
void JPJavaEnv::CallVoidMethod(jobject a0, jmethodID a1)
{ 
    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	env->functions->CallVoidMethod(env, a0, a1);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("CallVoidMethod");

}
예제 #6
0
void JPJavaEnv::CallStaticVoidMethodA(jclass a0, jmethodID a1, jvalue* a2)
{ 
    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	env->functions->CallStaticVoidMethodA(env, a0, a1, a2);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("CallStaticVoidMethodA");

}
예제 #7
0
void JPJavaEnv::SetObjectArrayElement(jobjectArray a0, int a1, jobject a2)
{ 
    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	env->functions->SetObjectArrayElement(env, a0, a1, a2);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("SetObjectArrayElement");

}
예제 #8
0
static Rboolean newJavaGD_NewPageConfirm(NewDevDesc *dd)
{
	newJavaGDDesc *xd = (newJavaGDDesc *) dd->deviceSpecific;
	JNIEnv *env = getJNIEnv();
	
	if (!env || !xd || !xd->talk) return FALSE;
	
	jboolean handled = (*env)->CallBooleanMethod(env, xd->talk, jmGDInterfaceNewPageConfirm);
	
	return (handled == JNI_TRUE) ? TRUE : FALSE;
}
예제 #9
0
jobject JPJavaEnv::NewGlobalRef(jobject a0)
{
	//TRACE_IN("JPJavaEnv::NewGlobalRef");
	//TRACE1((long)a0);
	jobject res;
	JNIEnv* env = getJNIEnv();
	res = env->functions->NewGlobalRef(env, a0);
	//TRACE1((long)res); //, JPJni::getClassName(a0).getSimpleName());
	return res;
	//TRACE_OUT;
}
예제 #10
0
void JPJavaEnv::DeleteGlobalRef(jobject obj)
{
	//TRACE_IN("JPJavaEnv::DeleteGlobalRef");
	//TRACE1((long)obj);
	JNIEnv* env = getJNIEnv();
	if (env != NULL)
	{
		env->functions->DeleteGlobalRef(env, obj);
	}
	//TRACE_OUT;
}
예제 #11
0
void nmdFree(struct NativeMiniDfsCluster* cl)
{
    JNIEnv *env = getJNIEnv();
    if (!env) {
        fprintf(stderr, "nmdFree: getJNIEnv failed\n");
        free(cl);
        return;
    }
    (*env)->DeleteGlobalRef(env, cl->obj);
    free(cl);
}
예제 #12
0
void JPJavaEnv::ReleaseStringUTFChars(jstring a0, const char* a1)
{ 
    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	env->functions->ReleaseStringUTFChars(env, a0, a1);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("ReleaseStringUTFChars");

}
예제 #13
0
파일: jGDtalk.c 프로젝트: cran/JavaGD
static void newJavaGD_Mode(int mode, NewDevDesc *dd)
{
    newJavaGDDesc *xd = (newJavaGDDesc *) dd->deviceSpecific;
    JNIEnv *env = getJNIEnv();
    jmethodID mid;
    
    if(!env || !xd || !xd->talk) return;
    
    mid = (*env)->GetMethodID(env, xd->talkClass, "gdMode", "(I)V");
    if (mid) (*env)->CallVoidMethod(env, xd->talk, mid, mode);
	chkX(env);
}
예제 #14
0
void openJavaGD(NewDevDesc *dd)
{	
	newJavaGDDesc *xd = (newJavaGDDesc *) dd->deviceSpecific;
	int devNr = ndevNumber(dd);
	
	JNIEnv *env = getJNIEnv();
	
	if (!env || !xd || !xd->talk || !jmGDInterfaceOpen) return;
	
	(*env)->CallVoidMethod(env, xd->talk, jmGDInterfaceOpen, (jint) devNr);
	chkX(env);
}
예제 #15
0
/**
 *  Get the list of class names of a java object
 * This is a jni wrapper around the RJavaTools.getSimpleClassNames method
 */
HIDE jarray getSimpleClassNames( jobject o, jboolean addConditionClasses ){

	JNIEnv *env=getJNIEnv();
	jarray a ;
	
	profStart();
	a = (jarray) (*env)->CallStaticObjectMethod(env, 
		rj_RJavaTools_Class, mid_rj_getSimpleClassNames, 
		o, addConditionClasses ) ;
    _prof(profReport("getSimpleClassNames[%d]:",o)) ;
	return a ;
}
예제 #16
0
static void newJavaGD_Circle(double x, double y, double r,  R_GE_gcontext *gc,  NewDevDesc *dd)
{
    newJavaGDDesc *xd = (newJavaGDDesc *) dd->deviceSpecific;
    JNIEnv *env = getJNIEnv();
    
    if(!env || !xd || !xd->talk) return;

    checkGC(env,xd, gc);
	
	(*env)->CallVoidMethod(env, xd->talk, jmGDInterfaceCircle, x, y, r);
	chkX(env);
}
예제 #17
0
static void newJavaGD_Rect(double x0, double y0, double x1, double y1,  R_GE_gcontext *gc,  NewDevDesc *dd)
{
    newJavaGDDesc *xd = (newJavaGDDesc *) dd->deviceSpecific;
    JNIEnv *env = getJNIEnv();
    
    if(!env || !xd || !xd->talk) return;
    
    checkGC(env,xd, gc);
	
	(*env)->CallVoidMethod(env, xd->talk, jmGDInterfaceRect, x0, y0, x1, y1);
	chkX(env);
}
예제 #18
0
파일: jGDtalk.c 프로젝트: cran/JavaGD
static void newJavaGD_Clip(double x0, double x1, double y0, double y1,  NewDevDesc *dd)
{
    newJavaGDDesc *xd = (newJavaGDDesc *) dd->deviceSpecific;
    JNIEnv *env = getJNIEnv();
    jmethodID mid;
    
    if(!env || !xd || !xd->talk) return;
       
    mid = (*env)->GetMethodID(env, xd->talkClass, "gdClip", "(DDDD)V");
    if (mid) (*env)->CallVoidMethod(env, xd->talk, mid, x0, x1, y0, y1);
	chkX(env);
}
예제 #19
0
jobjectArray JPJavaEnv::NewObjectArray(int a0, jclass a1, jobject a2)
{     jobjectArray res;

    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	res = env->functions->NewObjectArray(env, a0, a1, a2);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("NewObjectArray");
    return res;

}
예제 #20
0
static void newJavaGD_NewPage(R_GE_gcontext *gc, NewDevDesc *dd)
{
    newJavaGDDesc *xd = (newJavaGDDesc *) dd->deviceSpecific;
    JNIEnv *env = getJNIEnv();
    
    if(!env || !xd || !xd->talk) return;
	
	(*env)->CallVoidMethod(env, xd->talk, jmGDInterfaceNewPage);
	chkX(env);
	
    /* this is an exception - we send all GC attributes just after the NewPage command */
    sendAllGC(env, xd, gc);
}
예제 #21
0
jboolean JPJavaEnv::IsAssignableFrom(jclass a0, jclass a1)
{     jboolean res;

    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	res = env->functions->IsAssignableFrom(env, a0, a1);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("IsAssignableFrom");
    return res;

}
예제 #22
0
jstring JPJavaEnv::NewString(const jchar* a0, int a1)
{     jstring res;

    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	res = env->functions->NewString(env, a0, a1);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("NewString");
    return res;

}
예제 #23
0
jint JPJavaEnv::RegisterNatives(jclass a0, const JNINativeMethod* a1, jint a2)
{     jint res;

    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	res = env->functions->RegisterNatives(env, a0, a1, a2);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("RegisterNatives");
    return res;

}
예제 #24
0
jclass JPJavaEnv::DefineClass(const char* a0, jobject a1, const jbyte* a2, jsize a3)
{     jclass res;

    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	res = env->functions->DefineClass(env, a0, a1, a2, a3);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("DefineClass");
    return res;

}
예제 #25
0
jfieldID JPJavaEnv::GetStaticFieldID(jclass a0, const char* a1, const char* a2)
{     jfieldID res;

    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	res = env->functions->GetStaticFieldID(env, a0, a1, a2);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("GetStaticFieldID");
    return res;

}
예제 #26
0
jclass JPJavaEnv::GetObjectClass(jobject a0)
{     jclass res;

    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	res = env->functions->GetObjectClass(env, a0);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("GetObjectClass");
    return res;

}
예제 #27
0
jobject JPJavaEnv::GetObjectArrayElement(jobjectArray a0, int a1)
{     jobject res;

    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	res = env->functions->GetObjectArrayElement(env, a0, a1);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("GetObjectArrayElement");
    return res;

}
예제 #28
0
const char* JPJavaEnv::GetStringUTFChars(jstring a0, jboolean* a1)
{     const char* res;

    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	res = env->functions->GetStringUTFChars(env, a0, a1);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("GetStringUTFChars");
    return res;

}
void JNISurfaceTextureContext::onFrameAvailable(const BufferItem& /* item */)
{
    bool needsDetach = false;
    JNIEnv* env = getJNIEnv(&needsDetach);
    if (env != NULL) {
        env->CallStaticVoidMethod(mClazz, fields.postEvent, mWeakThiz);
    } else {
        ALOGW("onFrameAvailable event will not posted");
    }
    if (needsDetach) {
        detachJNI();
    }
}
예제 #30
0
jsize JPJavaEnv::GetArrayLength(jarray a0)
{     jsize res;

    JNIEnv* env = getJNIEnv();
    void* _save = JPEnv::getHost()->gotoExternal();

	res = env->functions->GetArrayLength(env, a0);
 
    JPEnv::getHost()->returnExternal(_save);
    JAVA_CHECK("GetArrayLength");
    return res;

}