aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandros Frantzis <alexandros.frantzis@linaro.org>2012-07-18 12:45:59 +0300
committerAlexandros Frantzis <alexandros.frantzis@linaro.org>2012-07-18 12:45:59 +0300
commit0fed88b4ba5da7f127fdb8d089c708ebebefa95d (patch)
tree5e7cdf6067be575a51a241422f151b0130ae9dcf
parent625b7969fcfcebcc28e4605bd67b41748420df57 (diff)
downloadglmark2-0fed88b4ba5da7f127fdb8d089c708ebebefa95d.tar.gz
Android: Make acceptable values of options available to the java code.
-rw-r--r--android/src/org/linaro/glmark2/EditorActivity.java2
-rw-r--r--android/src/org/linaro/glmark2/SceneInfo.java8
-rw-r--r--src/android.cpp17
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;