static jobject cuttherope_CallObjectMethodV(JNIEnv *env, jobject p1, jmethodID p2, va_list p3) { MODULE_DEBUG_PRINTF("cuttherope_CallObjectMethodV %s (%s)\n",p2->name,p2->sig); struct dummy_array *array; if (strcmp(p2->name, "loadData") == 0) { struct dummy_jstring *arg; arg = va_arg(p3, struct dummy_jstring*); jboolean flag = va_arg(p3, jint); (void)flag; char *filename = malloc(strlen(arg->data) + strlen("assets/") + 1); sprintf(filename, "assets/%s", arg->data); MODULE_DEBUG_PRINTF(" data=%s\n",arg->data); if ((array = GLOBAL_J(env)->read_file_to_jni_array(filename))) { MODULE_DEBUG_PRINTF(" data=%s size=%d\n", arg->data, array->length); // Poll for events here to avoid "not responding" messages SDL_Event e; while (SDL_PollEvent(&e)); return array; } else { MODULE_DEBUG_PRINTF(" data=%s not found\n",arg->data); return GLOBAL_J(env); } } else if (strcmp(p2->name, "getBytesOfBitmap") == 0) {
jobject worldofgoo_CallObjectMethodV(JNIEnv *env, jobject p1, jmethodID p2, va_list p3) { if (strcmp(p2->name, "getApkPath") == 0) { return (*env)->NewStringUTF(env, GLOBAL_J(env)->apk_filename); } else if (strcmp(p2->name, "getExternalStoragePath") == 0) { return (*env)->NewStringUTF(env, worldofgoo_priv.home_directory); } else if (strcmp(p2->name, "getInternalStoragePath") == 0) { return (*env)->NewStringUTF(env, worldofgoo_priv.home_directory); } else if (strcmp(p2->name, "getLanguage") == 0) { return (*env)->NewStringUTF(env, ""); } else if (strcmp(p2->name, "playSound") == 0) { // TODO: Play sound (doh!) } else { printf("Do not know what to do: %s\n", p2->name); exit(1); } return GLOBAL_J(env); }
jobject JNIEnv_CallObjectMethod(JNIEnv* env, jobject p1, jmethodID p2, ...) { MODULE_DEBUG_PRINTF("CallObjectMethod %x %x\n",p1,p2); //dummy_jobject* obj = p1; jmethodID method = p2; if (strcmp(method->name,"getPackageCodePath")==0) return (*env)->NewStringUTF(env, GLOBAL_J(env)->apk_filename); return NULL; }
jobject JNIEnv_CallStaticObjectMethod(JNIEnv* env, jclass p1, jmethodID p2, ...) { struct dummy_jclass* clazz = p1; jmethodID method = p2; MODULE_DEBUG_PRINTF("JNIEnv_CallStaticObjectMethod(%s,%s)\n",clazz->name,method->name); if (strcmp(method->name,"getProperty")==0) { //jstring property = va_arg(p3,jstring); //const char* prop = (*env)-> //dummy_jobject* obj = malloc(sizeof(dummy_jobject)); //return obj; return (*env)->NewStringUTF(env, GLOBAL_J(env)->apk_filename); } else if (strcmp(method->name,"getPackageCodePath")==0) { return (*env)->NewStringUTF(env, GLOBAL_J(env)->apk_filename); } return NULL; }
const char * JNIEnv_GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy) { MODULE_DEBUG_PRINTF("JNIEnv_GetStringUTFChars(%x)\n", string); if (string == GLOBAL_J(env)) { MODULE_DEBUG_PRINTF("WARNING: GetStringUTFChars on global\n"); return NULL; } if (string == NULL) { return strdup(""); } struct dummy_jstring *str = (struct dummy_jstring*)string; MODULE_DEBUG_PRINTF(" \\-> %s\n", str->data); return str->data; }
jobject worldofgoo_CallObjectMethodV(JNIEnv *env, jobject p1, jmethodID p2, va_list p3) { MODULE_DEBUG_PRINTF("worldofgoo_CallObjectMethodV %x %s\n", p1, p2->name); if (strcmp(p2->name, "getApkPath") == 0) { return (*env)->NewStringUTF(env, GLOBAL_J(env)->apk_filename); } else if (strcmp(p2->name, "getExternalStoragePath") == 0) { return (*env)->NewStringUTF(env, worldofgoo_priv.home_directory); } else if (strcmp(p2->name, "getInternalStoragePath") == 0) { return (*env)->NewStringUTF(env, worldofgoo_priv.home_directory); } else if (strcmp(p2->name, "getLanguage") == 0) { return (*env)->NewStringUTF(env, ""); } else if (strcmp(p2->name, "playSound") == 0) { struct dummy_jstring *name = va_arg(p3, struct dummy_jstring *); int loop = va_arg(p3, int); double volume = va_arg(p3, double); void *ret; MODULE_DEBUG_PRINTF("playSound '%s', %d, %f\n", name->data, loop, volume); ret = play_sound(name->data, loop, volume); MODULE_DEBUG_PRINTF(" = %p\n", ret); return ret; } else {