Skip to content

Commit 70f1cbe

Browse files
committed
support screen log on simulator
1 parent 71748fa commit 70f1cbe

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

simulator/simulator.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ ssize_t dridboot_internal_sd_read_block(void *buf, uint32_t block, uint count)
142142
jsize lengthOfArray = (*env)->GetArrayLength(env, arr);
143143
memcpy(buf, bufferPtr, lengthOfArray);
144144
(*env)->ReleaseByteArrayElements(env, arr, bufferPtr, JNI_ABORT);
145+
(*env)->DeleteLocalRef(env, arr);
145146
return lengthOfArray;
146147
}
147148

@@ -230,7 +231,17 @@ void droidboot_internal_lvgl_threads_init()
230231

231232
void droidboot_internal_platform_on_screen_log(const char *buf)
232233
{
233-
__android_log_print(ANDROID_LOG_INFO, "droidboot", "%s", buf); // TODO toast?
234+
JNIEnv* env;
235+
int ret;
236+
if ((ret = (*s_simulator_jvm)->GetEnv(s_simulator_jvm, (void **) &env, JNI_VERSION_1_6)) != JNI_OK) {
237+
__android_log_print(ANDROID_LOG_ERROR, "droidboot", "failed to get jni env: %d", ret);
238+
}
239+
240+
jclass cls = (*env)->GetObjectClass(env, s_simulator_thiz);
241+
jmethodID screenPrint = (*env)->GetMethodID(env, cls, "screenPrint", "(Ljava/lang/String;)V");
242+
jstring str = (*env)->NewStringUTF(env, buf);
243+
(*env)->CallVoidMethod(env, s_simulator_thiz, screenPrint, str);
244+
(*env)->DeleteLocalRef(env, str);
234245
}
235246

236247
void droidboot_internal_platform_system_log(const char *buf)

0 commit comments

Comments
 (0)