diff options
author | Alexandros Frantzis <alexandros.frantzis@linaro.org> | 2012-07-18 12:45:59 +0300 |
---|---|---|
committer | Alexandros Frantzis <alexandros.frantzis@linaro.org> | 2012-07-18 12:45:59 +0300 |
commit | 0fed88b4ba5da7f127fdb8d089c708ebebefa95d (patch) | |
tree | 5e7cdf6067be575a51a241422f151b0130ae9dcf | |
parent | 625b7969fcfcebcc28e4605bd67b41748420df57 (diff) | |
download | glmark2-0fed88b4ba5da7f127fdb8d089c708ebebefa95d.tar.gz |
Android: Make acceptable values of options available to the java code.
-rw-r--r-- | android/src/org/linaro/glmark2/EditorActivity.java | 2 | ||||
-rw-r--r-- | android/src/org/linaro/glmark2/SceneInfo.java | 8 | ||||
-rw-r--r-- | src/android.cpp | 17 |
3 files changed, 23 insertions, 4 deletions
diff --git a/android/src/org/linaro/glmark2/EditorActivity.java b/android/src/org/linaro/glmark2/EditorActivity.java index 2ff30f3..ead67e3 100644 --- a/android/src/org/linaro/glmark2/EditorActivity.java +++ b/android/src/org/linaro/glmark2/EditorActivity.java @@ -350,7 +350,7 @@ public class EditorActivity extends Activity { private ArrayList<SceneInfo> getSceneInfoList() { ArrayList<SceneInfo> l = new ArrayList<SceneInfo>(); SceneInfo customSceneInfo = new SceneInfo("__custom__"); - customSceneInfo.addOption("__custom__", "Custom benchmark string", ""); + customSceneInfo.addOption("__custom__", "Custom benchmark string", "", new String[0]); for (Parcelable p: getIntent().getParcelableArrayExtra("scene-info")) l.add((SceneInfo)p); diff --git a/android/src/org/linaro/glmark2/SceneInfo.java b/android/src/org/linaro/glmark2/SceneInfo.java index 7a85e07..5b4ae5f 100644 --- a/android/src/org/linaro/glmark2/SceneInfo.java +++ b/android/src/org/linaro/glmark2/SceneInfo.java @@ -30,6 +30,7 @@ class SceneInfo implements Parcelable { String name; String description; String defaultValue; + String[] acceptableValues; } public SceneInfo(String name) { @@ -37,11 +38,14 @@ class SceneInfo implements Parcelable { this.options = new ArrayList<Option>(); } - public void addOption(String name, String description, String defaultValue) { + public void addOption(String name, String description, String defaultValue, + String[] acceptableValues) + { Option opt = new Option(); opt.name = name; opt.description = description; opt.defaultValue = defaultValue; + opt.acceptableValues = acceptableValues; this.options.add(opt); } @@ -71,6 +75,7 @@ class SceneInfo implements Parcelable { out.writeString(opt.name); out.writeString(opt.description); out.writeString(opt.defaultValue); + out.writeStringArray(opt.acceptableValues); } } @@ -84,6 +89,7 @@ class SceneInfo implements Parcelable { opt.name = in.readString(); opt.description = in.readString(); opt.defaultValue = in.readString(); + opt.acceptableValues = in.createStringArray(); options.add(opt); } } diff --git a/src/android.cpp b/src/android.cpp index 64c7f35..99a38c1 100644 --- a/src/android.cpp +++ b/src/android.cpp @@ -179,7 +179,7 @@ scene_info_from_scene(JNIEnv *env, Scene &scene) { jclass cls = env->FindClass("org/linaro/glmark2/SceneInfo"); jmethodID constructor = env->GetMethodID(cls, "<init>", "(Ljava/lang/String;)V"); - jmethodID add_option = env->GetMethodID(cls, "addOption", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); + jmethodID add_option = env->GetMethodID(cls, "addOption", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V"); /* Create the SceneInfo object */ jstring name = env->NewStringUTF(scene.name().c_str()); @@ -197,14 +197,27 @@ scene_info_from_scene(JNIEnv *env, Scene &scene) jstring opt_description = env->NewStringUTF(opt.description.c_str()); jstring opt_default_value = env->NewStringUTF(opt.default_value.c_str()); + /* Create and populate the acceptable values array */ + jclass string_cls = env->FindClass("java/lang/String"); + jobjectArray opt_acceptable_values = env->NewObjectArray(opt.acceptable_values.size(), + string_cls, 0); + + for (size_t i = 0; i < opt.acceptable_values.size(); i++) { + jstring opt_value = env->NewStringUTF(opt.acceptable_values[i].c_str()); + env->SetObjectArrayElement(opt_acceptable_values, i, opt_value); + env->DeleteLocalRef(opt_value); + } + env->CallVoidMethod(scene_info, add_option, opt_name, opt_description, - opt_default_value); + opt_default_value, + opt_acceptable_values); env->DeleteLocalRef(opt_name); env->DeleteLocalRef(opt_description); env->DeleteLocalRef(opt_default_value); + env->DeleteLocalRef(opt_acceptable_values); } return scene_info; |