From 3515f9cea795454a798836d43b05fe374f53fc59 Mon Sep 17 00:00:00 2001
From: Maxime Graulich <maxime.graulich@gmail.com>
Date: Thu, 29 Aug 2013 14:32:42 +0000
Subject: [PATCH] Android: implement Parcelable interface for Gmsh class

---
 .../Android/src/org/geuz/onelab/Gmsh.java     | 40 ++++++++++++++-----
 contrib/mobile/androidGModel.cpp              |  6 ---
 contrib/mobile/androidGModel.h                |  8 ----
 3 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java b/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java
index 8ab60bc12d..7fc060497f 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java
@@ -1,8 +1,10 @@
 package org.geuz.onelab;
 
 import android.os.Handler;
+import android.os.Parcel;
+import android.os.Parcelable;
 
-public class Gmsh {
+public class Gmsh implements Parcelable {
 	/** From C / C++ code **/
 	static {
 		System.loadLibrary("f2cblas");
@@ -18,7 +20,6 @@ public class Gmsh {
 	private native void initView(long ptr, int w, int h); // Called each time the GLView change
 	private native void drawView(long ptr); // Called each time the GLView request a render
 	private native void eventHandler(long ptr, int event, float x, float y);
-	private native long getOnelabInstance(); // return the singleton of the onelab server
 	public native String[] getParams(); // return the parameters for onelab
 	public native int setParam(String type, String name, String value); // change a parameters
 	public native int setStringOption(String category, String name, String value);
@@ -33,12 +34,10 @@ public class Gmsh {
 	
 	/** Java CLASS **/
 	private long ptr;
-	private long onelab;
 	private Handler handler;
 
 	public Gmsh(String name, Handler handler) {
 		ptr = this.init(name);
-		onelab = this.getOnelabInstance();
 		this.handler = handler;
 	}
 
@@ -81,19 +80,38 @@ public class Gmsh {
 	{
 		this.eventHandler(ptr, 10, 0, 0);
 	}
-	public long getOnelab() {
-		return this.onelab;
-	}
 	public void ShowPopup(String message) {
-		handler.obtainMessage(0, message).sendToTarget();
+		if(handler != null)
+			handler.obtainMessage(0, message).sendToTarget();
 	}
 	public void RequestRender() {
-		handler.obtainMessage(1).sendToTarget();
+		if(handler != null)
+			handler.obtainMessage(1).sendToTarget();
 	}
 	public void SetLoading(String message) {
-		handler.obtainMessage(2, message).sendToTarget();
+		if(handler != null)
+			handler.obtainMessage(2, message).sendToTarget();
 	}
 	public void SetLoading(int percent) {
-		handler.obtainMessage(3, percent, 100).sendToTarget();
+		if(handler != null)
+			handler.obtainMessage(3, percent, 100).sendToTarget();
+	}
+	// Parcelable methods/constructors
+	private Gmsh(Parcel in) {
+		this.ptr = in.readLong();
+	}
+	public int describeContents() {return 0;}
+	public void writeToParcel(Parcel out, int flags) {
+		out.writeLong(this.ptr);
 	}
+	public Parcelable.Creator<Gmsh> CREATOR = new Parcelable.Creator<Gmsh>() {
+
+		public Gmsh createFromParcel(Parcel source) {
+			return new Gmsh(source);
+		}
+
+		public Gmsh[] newArray(int size) {
+			return new Gmsh[size];
+		}
+	};
 }
diff --git a/contrib/mobile/androidGModel.cpp b/contrib/mobile/androidGModel.cpp
index 7df30ae776..8575ab12ef 100644
--- a/contrib/mobile/androidGModel.cpp
+++ b/contrib/mobile/androidGModel.cpp
@@ -17,7 +17,6 @@
 #include "androidGModel.h"
 #include "drawContext.h"
 
-onelab::server *getOnelab() {return onelab::server::instance();}
 extern "C"
 {
 static JavaVM *gJavaVM;
@@ -229,11 +228,6 @@ JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_getIntegerOption
 	GmshGetOption(category, name, value, 0);
 	return value;
 }
-JNIEXPORT jlong JNICALL Java_org_geuz_onelab_Gmsh_getOnelabInstance
-  (JNIEnv *env , jobject obj)
-{
-	return reinterpret_cast<jlong>(getOnelab());
-}
 
 JNIEXPORT jobjectArray JNICALL Java_org_geuz_onelab_Gmsh_getParams
   (JNIEnv *env, jobject obj)
diff --git a/contrib/mobile/androidGModel.h b/contrib/mobile/androidGModel.h
index 12aa59d2e8..4ebc485c23 100644
--- a/contrib/mobile/androidGModel.h
+++ b/contrib/mobile/androidGModel.h
@@ -97,14 +97,6 @@ JNIEXPORT jdouble JNICALL Java_org_geuz_onelab_Gmsh_getDoubleOption
 JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_getIntegerOption
   (JNIEnv *, jobject, jstring, jstring);
 
-/*
- * Class:     org_geuz_onelab_Gmsh
- * Method:    getOnelabInstance
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_org_geuz_onelab_Gmsh_getOnelabInstance
-  (JNIEnv *, jobject);
-
 /*
  * Class:     org_geuz_onelab_Gmsh
  * Method:    getParams
-- 
GitLab