JNIEXPORT jstring JNICALL Java_com_max2idea_android_limbo_jni_VMExecutor_stop( JNIEnv* env, jobject thiz) { char res_msg[MSG_BUFSIZE + 1] = { 0 }; if (handle == NULL) return (*env)->NewStringUTF(env, "VM not running"); jclass c = (*env)->GetObjectClass(env, thiz); jfieldID fid = (*env)->GetFieldID(env, c, "restart", "I"); int restart_int = (*env)->GetIntField(env, thiz, fid); typedef void (*stop_vm_t)(); dlerror(); stop_vm_t stop_vm = (stop_vm_t) dlsym(handle, "stop_vm"); const char *dlsym_error = dlerror(); if (dlsym_error) { LOGV("Cannot load symbol 'stop_vm': %s\n", dlsym_error); // dlclose(handle); // handle = NULL; return (*env)->NewStringUTF(env, res_msg); } stop_vm(!restart_int); if (restart_int) sprintf(res_msg, "VM Restart Request"); else sprintf(res_msg, "VM Stop Request"); LOGV(res_msg); started = restart_int; return (*env)->NewStringUTF(env, res_msg); }
static void emonk_stop(ErlDrvData handle) { emonk_drv_t* drv = (emonk_drv_t*) handle; stop_vm(drv->vm); driver_free(drv); }
//----------------------------------------------------------------------------- // name: ~miniAudicle() // desc: ... //----------------------------------------------------------------------------- miniAudicle::~miniAudicle() { if( vm_on ) stop_vm(); delete class_names; // log EM_log( CK_LOG_INFO, "miniAudicle instance destroyed..." ); }