| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Skia | 3 * Copyright 2011 Skia |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 #include "com_skia_SkiaSampleRenderer.h" | 8 #include "com_skia_SkiaSampleRenderer.h" |
| 9 | 9 |
| 10 #include "SampleApp.h" | 10 #include "SampleApp.h" |
| 11 #include "SkApplication.h" | 11 #include "SkApplication.h" |
| 12 #include "SkCanvas.h" | 12 #include "SkCanvas.h" |
| 13 #include "SkDevice.h" | 13 #include "SkDevice.h" |
| 14 #include "SkEvent.h" | 14 #include "SkEvent.h" |
| 15 #include "SkWindow.h" | 15 #include "SkWindow.h" |
| 16 | 16 |
| 17 #include <jni.h> | 17 #include <jni.h> |
| 18 #include "AndroidKeyToSkKey.h" | 18 #include "AndroidKeyToSkKey.h" |
| 19 | 19 |
| 20 | 20 |
| 21 /////////////////////////////////////////// | 21 /////////////////////////////////////////// |
| 22 ///////////////// Globals ///////////////// | 22 ///////////////// Globals ///////////////// |
| 23 /////////////////////////////////////////// | 23 /////////////////////////////////////////// |
| 24 | 24 |
| 25 struct ActivityGlue { | 25 struct ActivityGlue { |
| 26 JNIEnv* m_env; | 26 JNIEnv* m_env; |
| 27 jweak m_obj; | 27 jweak m_obj; |
| 28 jmethodID m_setTitle; | 28 jmethodID m_setTitle; |
| 29 jmethodID m_setSlideList; | 29 jmethodID m_setSlideList; |
| 30 jmethodID m_addToDownloads; | |
| 31 ActivityGlue() { | 30 ActivityGlue() { |
| 32 m_env = nullptr; | 31 m_env = nullptr; |
| 33 m_obj = nullptr; | 32 m_obj = nullptr; |
| 34 m_setTitle = nullptr; | 33 m_setTitle = nullptr; |
| 35 m_setSlideList = nullptr; | 34 m_setSlideList = nullptr; |
| 36 m_addToDownloads = nullptr; | |
| 37 } | 35 } |
| 38 } gActivityGlue; | 36 } gActivityGlue; |
| 39 | 37 |
| 40 struct WindowGlue { | 38 struct WindowGlue { |
| 41 jweak m_obj; | 39 jweak m_obj; |
| 42 jmethodID m_inval; | 40 jmethodID m_inval; |
| 43 jmethodID m_queueSkEvent; | 41 jmethodID m_queueSkEvent; |
| 44 jmethodID m_startTimer; | 42 jmethodID m_startTimer; |
| 45 jmethodID m_getMSAASampleCount; | 43 jmethodID m_getMSAASampleCount; |
| 46 WindowGlue() { | 44 WindowGlue() { |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 if (!env || !gWindowGlue.m_inval || !gWindowGlue.m_obj) { | 113 if (!env || !gWindowGlue.m_inval || !gWindowGlue.m_obj) { |
| 116 return; | 114 return; |
| 117 } | 115 } |
| 118 if (env->IsSameObject(gWindowGlue.m_obj, nullptr)) { | 116 if (env->IsSameObject(gWindowGlue.m_obj, nullptr)) { |
| 119 SkDebugf("ERROR: The JNI WeakRef to the Window is invalid"); | 117 SkDebugf("ERROR: The JNI WeakRef to the Window is invalid"); |
| 120 return; | 118 return; |
| 121 } | 119 } |
| 122 env->CallVoidMethod(gWindowGlue.m_obj, gWindowGlue.m_inval); | 120 env->CallVoidMethod(gWindowGlue.m_obj, gWindowGlue.m_inval); |
| 123 } | 121 } |
| 124 | 122 |
| 125 void SkOSWindow::onPDFSaved(const char title[], const char desc[], | |
| 126 const char path[]) | |
| 127 { | |
| 128 JNIEnv* env = gActivityGlue.m_env; | |
| 129 if (!env || !gActivityGlue.m_addToDownloads || !gActivityGlue.m_obj) { | |
| 130 return; | |
| 131 } | |
| 132 if (env->IsSameObject(gActivityGlue.m_obj, nullptr)) { | |
| 133 SkDebugf("ERROR: The JNI WeakRef to the Activity is invalid"); | |
| 134 return; | |
| 135 } | |
| 136 | |
| 137 jstring jtitle = env->NewStringUTF(title); | |
| 138 jstring jdesc = env->NewStringUTF(desc); | |
| 139 jstring jpath = env->NewStringUTF(path); | |
| 140 | |
| 141 env->CallVoidMethod(gActivityGlue.m_obj, gActivityGlue.m_addToDownloads, | |
| 142 jtitle, jdesc, jpath); | |
| 143 | |
| 144 env->DeleteLocalRef(jtitle); | |
| 145 env->DeleteLocalRef(jdesc); | |
| 146 env->DeleteLocalRef(jpath); | |
| 147 } | |
| 148 | |
| 149 /////////////////////////////////////////// | 123 /////////////////////////////////////////// |
| 150 /////////////// SkEvent impl ////////////// | 124 /////////////// SkEvent impl ////////////// |
| 151 /////////////////////////////////////////// | 125 /////////////////////////////////////////// |
| 152 | 126 |
| 153 void SkEvent::SignalQueueTimer(SkMSec ms) | 127 void SkEvent::SignalQueueTimer(SkMSec ms) |
| 154 { | 128 { |
| 155 JNIEnv* env = gActivityGlue.m_env; | 129 JNIEnv* env = gActivityGlue.m_env; |
| 156 if (!env || !gWindowGlue.m_startTimer || !gWindowGlue.m_obj || !ms) { | 130 if (!env || !gWindowGlue.m_startTimer || !gWindowGlue.m_obj || !ms) { |
| 157 return; | 131 return; |
| 158 } | 132 } |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 | 165 |
| 192 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, | 166 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, |
| 193 jobject thiz, jobject jsampleActivity, jstring cmdLineFlags, jint msaaSa
mpleCount) | 167 jobject thiz, jobject jsampleActivity, jstring cmdLineFlags, jint msaaSa
mpleCount) |
| 194 { | 168 { |
| 195 // setup jni hooks to the java activity | 169 // setup jni hooks to the java activity |
| 196 gActivityGlue.m_env = env; | 170 gActivityGlue.m_env = env; |
| 197 jclass clazz = env->FindClass("com/skia/SkiaSampleActivity"); | 171 jclass clazz = env->FindClass("com/skia/SkiaSampleActivity"); |
| 198 gActivityGlue.m_obj = env->NewWeakGlobalRef(jsampleActivity); | 172 gActivityGlue.m_obj = env->NewWeakGlobalRef(jsampleActivity); |
| 199 gActivityGlue.m_setTitle = GetJMethod(env, clazz, "setTitle", "(Ljava/lang/C
harSequence;)V"); | 173 gActivityGlue.m_setTitle = GetJMethod(env, clazz, "setTitle", "(Ljava/lang/C
harSequence;)V"); |
| 200 gActivityGlue.m_setSlideList = GetJMethod(env, clazz, "setSlideList", "([Lja
va/lang/String;)V"); | 174 gActivityGlue.m_setSlideList = GetJMethod(env, clazz, "setSlideList", "([Lja
va/lang/String;)V"); |
| 201 gActivityGlue.m_addToDownloads = GetJMethod(env, clazz, "addToDownloads", | |
| 202 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); | |
| 203 env->DeleteLocalRef(clazz); | 175 env->DeleteLocalRef(clazz); |
| 204 | 176 |
| 205 // setup jni hooks to the java renderer | 177 // setup jni hooks to the java renderer |
| 206 clazz = env->FindClass("com/skia/SkiaSampleRenderer"); | 178 clazz = env->FindClass("com/skia/SkiaSampleRenderer"); |
| 207 gWindowGlue.m_obj = env->NewWeakGlobalRef(thiz); | 179 gWindowGlue.m_obj = env->NewWeakGlobalRef(thiz); |
| 208 gWindowGlue.m_inval = GetJMethod(env, clazz, "requestRender", "()V"); | 180 gWindowGlue.m_inval = GetJMethod(env, clazz, "requestRender", "()V"); |
| 209 gWindowGlue.m_queueSkEvent = GetJMethod(env, clazz, "queueSkEvent", "()V"); | 181 gWindowGlue.m_queueSkEvent = GetJMethod(env, clazz, "queueSkEvent", "()V"); |
| 210 gWindowGlue.m_startTimer = GetJMethod(env, clazz, "startTimer", "(I)V"); | 182 gWindowGlue.m_startTimer = GetJMethod(env, clazz, "startTimer", "(I)V"); |
| 211 gWindowGlue.m_getMSAASampleCount = GetJMethod(env, clazz, "getMSAASampleCoun
t", "()I"); | 183 gWindowGlue.m_getMSAASampleCount = GetJMethod(env, clazz, "getMSAASampleCoun
t", "()I"); |
| 212 env->DeleteLocalRef(clazz); | 184 env->DeleteLocalRef(clazz); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 JNIEnv* env, jobject thiz) | 347 JNIEnv* env, jobject thiz) |
| 376 { | 348 { |
| 377 gWindow->saveToPdf(); | 349 gWindow->saveToPdf(); |
| 378 } | 350 } |
| 379 | 351 |
| 380 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_postInval( | 352 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_postInval( |
| 381 JNIEnv* env, jobject thiz) | 353 JNIEnv* env, jobject thiz) |
| 382 { | 354 { |
| 383 gWindow->postInvalDelay(); | 355 gWindow->postInvalDelay(); |
| 384 } | 356 } |
| OLD | NEW |