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" |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 | 165 |
166 static jmethodID GetJMethod(JNIEnv* env, jclass clazz, const char name[], | 166 static jmethodID GetJMethod(JNIEnv* env, jclass clazz, const char name[], |
167 const char signature[]) | 167 const char signature[]) |
168 { | 168 { |
169 jmethodID m = env->GetMethodID(clazz, name, signature); | 169 jmethodID m = env->GetMethodID(clazz, name, signature); |
170 if (!m) SkDebugf("Could not find Java method %s\n", name); | 170 if (!m) SkDebugf("Could not find Java method %s\n", name); |
171 return m; | 171 return m; |
172 } | 172 } |
173 | 173 |
174 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, | 174 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, |
175 jobject thiz, jobject jsampleActivity, jint msaaSampleCount) | 175 jobject thiz, jobject jsampleActivity, jstring cmdLineFlags, jint msaaSa
mpleCount) |
176 { | 176 { |
177 // setup jni hooks to the java activity | 177 // setup jni hooks to the java activity |
178 gActivityGlue.m_env = env; | 178 gActivityGlue.m_env = env; |
179 jclass clazz = env->FindClass("com/skia/SkiaSampleActivity"); | 179 jclass clazz = env->FindClass("com/skia/SkiaSampleActivity"); |
180 gActivityGlue.m_obj = env->NewWeakGlobalRef(jsampleActivity); | 180 gActivityGlue.m_obj = env->NewWeakGlobalRef(jsampleActivity); |
181 gActivityGlue.m_setTitle = GetJMethod(env, clazz, "setTitle", "(Ljava/lang/C
harSequence;)V"); | 181 gActivityGlue.m_setTitle = GetJMethod(env, clazz, "setTitle", "(Ljava/lang/C
harSequence;)V"); |
182 gActivityGlue.m_setSlideList = GetJMethod(env, clazz, "setSlideList", "([Lja
va/lang/String;)V"); | 182 gActivityGlue.m_setSlideList = GetJMethod(env, clazz, "setSlideList", "([Lja
va/lang/String;)V"); |
183 gActivityGlue.m_addToDownloads = GetJMethod(env, clazz, "addToDownloads", | 183 gActivityGlue.m_addToDownloads = GetJMethod(env, clazz, "addToDownloads", |
184 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); | 184 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); |
185 env->DeleteLocalRef(clazz); | 185 env->DeleteLocalRef(clazz); |
186 | 186 |
187 // setup jni hooks to the java renderer | 187 // setup jni hooks to the java renderer |
188 clazz = env->FindClass("com/skia/SkiaSampleRenderer"); | 188 clazz = env->FindClass("com/skia/SkiaSampleRenderer"); |
189 gWindowGlue.m_obj = env->NewWeakGlobalRef(thiz); | 189 gWindowGlue.m_obj = env->NewWeakGlobalRef(thiz); |
190 gWindowGlue.m_inval = GetJMethod(env, clazz, "requestRender", "()V"); | 190 gWindowGlue.m_inval = GetJMethod(env, clazz, "requestRender", "()V"); |
191 gWindowGlue.m_queueSkEvent = GetJMethod(env, clazz, "queueSkEvent", "()V"); | 191 gWindowGlue.m_queueSkEvent = GetJMethod(env, clazz, "queueSkEvent", "()V"); |
192 gWindowGlue.m_startTimer = GetJMethod(env, clazz, "startTimer", "(I)V"); | 192 gWindowGlue.m_startTimer = GetJMethod(env, clazz, "startTimer", "(I)V"); |
193 gWindowGlue.m_getMSAASampleCount = GetJMethod(env, clazz, "getMSAASampleCoun
t", "()I"); | 193 gWindowGlue.m_getMSAASampleCount = GetJMethod(env, clazz, "getMSAASampleCoun
t", "()I"); |
194 env->DeleteLocalRef(clazz); | 194 env->DeleteLocalRef(clazz); |
195 | 195 |
196 application_init(); | 196 application_init(); |
| 197 |
| 198 const char* flags = env->GetStringUTFChars(cmdLineFlags, JNI_FALSE); |
| 199 SkTArray<SkString> flagEntries; |
| 200 SkStrSplit(flags, " ", &flagEntries); |
| 201 |
197 SkTArray<const char*> args; | 202 SkTArray<const char*> args; |
198 | |
199 args.push_back("SampleApp"); | 203 args.push_back("SampleApp"); |
200 // TODO: push ability to select skp dir into the UI | 204 for (int i = 0; i < flagEntries.count(); i++) { |
201 args.push_back("--pictureDir"); | 205 SkDebugf(flagEntries[i].c_str()); |
202 args.push_back("/sdcard/skiabot/skia_skp"); | 206 args.push_back(flagEntries[i].c_str()); |
203 | 207 } |
204 args.push_back("--resourcePath"); | |
205 args.push_back("/data/local/tmp/skia/resources/"); | |
206 | 208 |
207 SkString msaaSampleCountString; | 209 SkString msaaSampleCountString; |
208 if (msaaSampleCount > 0) { | 210 if (msaaSampleCount > 0) { |
209 args.push_back("--msaa"); | 211 args.push_back("--msaa"); |
210 msaaSampleCountString.appendS32(static_cast<uint32_t>(msaaSampleCount)); | 212 msaaSampleCountString.appendS32(static_cast<uint32_t>(msaaSampleCount)); |
211 args.push_back(msaaSampleCountString.c_str()); | 213 args.push_back(msaaSampleCountString.c_str()); |
212 } | 214 } |
213 | 215 |
214 gWindow = new SampleWindow(NULL, args.count(), const_cast<char**>(args.begin
()), NULL); | 216 if (gWindow) { |
| 217 SkDebugf("The sample window already exists."); |
| 218 } else { |
| 219 gWindow = new SampleWindow(NULL, args.count(), const_cast<char**>(args.b
egin()), NULL); |
| 220 } |
| 221 |
| 222 // cleanup the command line flags |
| 223 env->ReleaseStringUTFChars(cmdLineFlags, flags); |
215 | 224 |
216 // send the list of slides up to the activity | 225 // send the list of slides up to the activity |
217 const int slideCount = gWindow->sampleCount(); | 226 const int slideCount = gWindow->sampleCount(); |
218 jobjectArray slideList = env->NewObjectArray(slideCount, env->FindClass("jav
a/lang/String"), env->NewStringUTF("")); | 227 jobjectArray slideList = env->NewObjectArray(slideCount, env->FindClass("jav
a/lang/String"), env->NewStringUTF("")); |
219 for (int i = 0; i < slideCount; i++) { | 228 for (int i = 0; i < slideCount; i++) { |
220 jstring slideTitle = env->NewStringUTF(gWindow->getSampleTitle(i).c_str(
)); | 229 jstring slideTitle = env->NewStringUTF(gWindow->getSampleTitle(i).c_str(
)); |
221 env->SetObjectArrayElement(slideList, i, slideTitle); | 230 env->SetObjectArrayElement(slideList, i, slideTitle); |
222 env->DeleteLocalRef(slideTitle); | 231 env->DeleteLocalRef(slideTitle); |
223 } | 232 } |
224 env->CallVoidMethod(gActivityGlue.m_obj, gActivityGlue.m_setSlideList, slide
List); | 233 env->CallVoidMethod(gActivityGlue.m_obj, gActivityGlue.m_setSlideList, slide
List); |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 JNIEnv* env, jobject thiz) | 357 JNIEnv* env, jobject thiz) |
349 { | 358 { |
350 gWindow->saveToPdf(); | 359 gWindow->saveToPdf(); |
351 } | 360 } |
352 | 361 |
353 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_postInval( | 362 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_postInval( |
354 JNIEnv* env, jobject thiz) | 363 JNIEnv* env, jobject thiz) |
355 { | 364 { |
356 gWindow->postInvalDelay(); | 365 gWindow->postInvalDelay(); |
357 } | 366 } |
OLD | NEW |