Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(258)

Side by Side Diff: platform_tools/android/app/jni/com_skia_SkiaSampleRenderer.cpp

Issue 60273006: Support MSAA4 and (non-ES) OpenGL in Android SampleApp (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "GrContext.h" 10 #include "GrContext.h"
(...skipping 26 matching lines...) Expand all
37 m_setSlideList = NULL; 37 m_setSlideList = NULL;
38 m_addToDownloads = NULL; 38 m_addToDownloads = NULL;
39 } 39 }
40 } gActivityGlue; 40 } gActivityGlue;
41 41
42 struct WindowGlue { 42 struct WindowGlue {
43 jweak m_obj; 43 jweak m_obj;
44 jmethodID m_inval; 44 jmethodID m_inval;
45 jmethodID m_queueSkEvent; 45 jmethodID m_queueSkEvent;
46 jmethodID m_startTimer; 46 jmethodID m_startTimer;
47 jmethodID m_getMSAASampleCount;
47 WindowGlue() { 48 WindowGlue() {
48 m_obj = NULL; 49 m_obj = NULL;
49 m_inval = NULL; 50 m_inval = NULL;
50 m_queueSkEvent = NULL; 51 m_queueSkEvent = NULL;
51 m_startTimer = NULL; 52 m_startTimer = NULL;
53 m_getMSAASampleCount = NULL;
52 } 54 }
53 } gWindowGlue; 55 } gWindowGlue;
54 56
55 SampleWindow* gWindow; 57 SampleWindow* gWindow;
56 58
57 /////////////////////////////////////////// 59 ///////////////////////////////////////////
58 ///////////// SkOSWindow impl ///////////// 60 ///////////// SkOSWindow impl /////////////
59 /////////////////////////////////////////// 61 ///////////////////////////////////////////
60 62
63 bool SkOSWindow::attach(SkBackEndTypes /* attachType */, int msaaSampleCount, At tachmentInfo* info)
64 {
65 JNIEnv* env = gActivityGlue.m_env;
66 if (!env || !gWindowGlue.m_getMSAASampleCount || !gWindowGlue.m_obj) {
67 return false;
68 }
69 if (env->IsSameObject(gWindowGlue.m_obj, NULL)) {
70 SkDebugf("ERROR: The JNI WeakRef to the Window is invalid");
71 return false;
72 }
73 info->fSampleCount = env->CallIntMethod(gWindowGlue.m_obj, gWindowGlue.m_get MSAASampleCount);
74
75 // This is the value requested in SkiaSampleView.java.
76 info->fStencilBits = 8;
77 return true;
78 }
79
61 void SkOSWindow::onSetTitle(const char title[]) 80 void SkOSWindow::onSetTitle(const char title[])
62 { 81 {
63 JNIEnv* env = gActivityGlue.m_env; 82 JNIEnv* env = gActivityGlue.m_env;
64 if (!env) { 83 if (!env) {
65 return; 84 return;
66 } 85 }
67 if (env->IsSameObject(gActivityGlue.m_obj, NULL)) { 86 if (env->IsSameObject(gActivityGlue.m_obj, NULL)) {
68 SkDebugf("ERROR: The JNI WeakRef to the Activity is invalid"); 87 SkDebugf("ERROR: The JNI WeakRef to the Activity is invalid");
69 return; 88 return;
70 } 89 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 167
149 static jmethodID GetJMethod(JNIEnv* env, jclass clazz, const char name[], 168 static jmethodID GetJMethod(JNIEnv* env, jclass clazz, const char name[],
150 const char signature[]) 169 const char signature[])
151 { 170 {
152 jmethodID m = env->GetMethodID(clazz, name, signature); 171 jmethodID m = env->GetMethodID(clazz, name, signature);
153 if (!m) SkDebugf("Could not find Java method %s\n", name); 172 if (!m) SkDebugf("Could not find Java method %s\n", name);
154 return m; 173 return m;
155 } 174 }
156 175
157 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env, 176 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_init(JNIEnv* env,
158 jobject thiz, jobject jsampleActivity) 177 jobject thiz, jobject jsampleActivity, jint msaaSampleCount)
159 { 178 {
160 // setup jni hooks to the java activity 179 // setup jni hooks to the java activity
161 gActivityGlue.m_env = env; 180 gActivityGlue.m_env = env;
162 jclass clazz = env->FindClass("com/skia/SkiaSampleActivity"); 181 jclass clazz = env->FindClass("com/skia/SkiaSampleActivity");
163 gActivityGlue.m_obj = env->NewWeakGlobalRef(jsampleActivity); 182 gActivityGlue.m_obj = env->NewWeakGlobalRef(jsampleActivity);
164 gActivityGlue.m_setTitle = GetJMethod(env, clazz, "setTitle", "(Ljava/lang/C harSequence;)V"); 183 gActivityGlue.m_setTitle = GetJMethod(env, clazz, "setTitle", "(Ljava/lang/C harSequence;)V");
165 gActivityGlue.m_setSlideList = GetJMethod(env, clazz, "setSlideList", "([Lja va/lang/String;)V"); 184 gActivityGlue.m_setSlideList = GetJMethod(env, clazz, "setSlideList", "([Lja va/lang/String;)V");
166 gActivityGlue.m_addToDownloads = GetJMethod(env, clazz, "addToDownloads", 185 gActivityGlue.m_addToDownloads = GetJMethod(env, clazz, "addToDownloads",
167 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); 186 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
168 env->DeleteLocalRef(clazz); 187 env->DeleteLocalRef(clazz);
169 188
170 // setup jni hooks to the java renderer 189 // setup jni hooks to the java renderer
171 clazz = env->FindClass("com/skia/SkiaSampleRenderer"); 190 clazz = env->FindClass("com/skia/SkiaSampleRenderer");
172 gWindowGlue.m_obj = env->NewWeakGlobalRef(thiz); 191 gWindowGlue.m_obj = env->NewWeakGlobalRef(thiz);
173 gWindowGlue.m_inval = GetJMethod(env, clazz, "requestRender", "()V"); 192 gWindowGlue.m_inval = GetJMethod(env, clazz, "requestRender", "()V");
174 gWindowGlue.m_queueSkEvent = GetJMethod(env, clazz, "queueSkEvent", "()V"); 193 gWindowGlue.m_queueSkEvent = GetJMethod(env, clazz, "queueSkEvent", "()V");
175 gWindowGlue.m_startTimer = GetJMethod(env, clazz, "startTimer", "(I)V"); 194 gWindowGlue.m_startTimer = GetJMethod(env, clazz, "startTimer", "(I)V");
195 gWindowGlue.m_getMSAASampleCount = GetJMethod(env, clazz, "getMSAASampleCoun t", "()I");
176 env->DeleteLocalRef(clazz); 196 env->DeleteLocalRef(clazz);
177 197
178 application_init(); 198 application_init();
199 SkTArray<const char*> args;
200
201 args.push_back("SampleApp");
179 // TODO: push ability to select skp dir into the UI 202 // TODO: push ability to select skp dir into the UI
180 const char* argv[] = { "SampleApp", "--pictureDir", "/sdcard/skiabot/skia_sk p" }; 203 args.push_back("--pictureDir");
181 gWindow = new SampleWindow(NULL, sizeof(argv)/sizeof(char*), const_cast<char **>(argv), NULL); 204 args.push_back("/sdcard/skiabot/skia_skp");
205
206 SkString msaaSampleCountString;
207 if (msaaSampleCount > 0) {
208 args.push_back("--msaa");
209 msaaSampleCountString.printf("%d", msaaSampleCount);
djsollen 2013/11/07 16:57:43 printf in this case is a little more than you need
Kimmo Kinnunen 2013/11/20 13:45:00 Done.
210 args.push_back(msaaSampleCountString.c_str());
211 }
212
213 gWindow = new SampleWindow(NULL, args.count(), const_cast<char**>(args.begin ()), NULL);
182 214
183 // send the list of slides up to the activity 215 // send the list of slides up to the activity
184 const int slideCount = gWindow->sampleCount(); 216 const int slideCount = gWindow->sampleCount();
185 jobjectArray slideList = env->NewObjectArray(slideCount, env->FindClass("jav a/lang/String"), env->NewStringUTF("")); 217 jobjectArray slideList = env->NewObjectArray(slideCount, env->FindClass("jav a/lang/String"), env->NewStringUTF(""));
186 for (int i = 0; i < slideCount; i++) { 218 for (int i = 0; i < slideCount; i++) {
187 jstring slideTitle = env->NewStringUTF(gWindow->getSampleTitle(i).c_str( )); 219 jstring slideTitle = env->NewStringUTF(gWindow->getSampleTitle(i).c_str( ));
188 env->SetObjectArrayElement(slideList, i, slideTitle); 220 env->SetObjectArrayElement(slideList, i, slideTitle);
189 env->DeleteLocalRef(slideTitle); 221 env->DeleteLocalRef(slideTitle);
190 } 222 }
191 env->CallVoidMethod(gActivityGlue.m_obj, gActivityGlue.m_setSlideList, slide List); 223 env->CallVoidMethod(gActivityGlue.m_obj, gActivityGlue.m_setSlideList, slide List);
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 JNIEnv* env, jobject thiz) 347 JNIEnv* env, jobject thiz)
316 { 348 {
317 gWindow->saveToPdf(); 349 gWindow->saveToPdf();
318 } 350 }
319 351
320 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_postInval( 352 JNIEXPORT void JNICALL Java_com_skia_SkiaSampleRenderer_postInval(
321 JNIEnv* env, jobject thiz) 353 JNIEnv* env, jobject thiz)
322 { 354 {
323 gWindow->postInvalDelay(); 355 gWindow->postInvalDelay();
324 } 356 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698