[Title] added jni files
authorgiwoong.kim <giwoong.kim@samsung.com>
Mon, 23 Jul 2012 02:54:27 +0000 (11:54 +0900)
committergiwoong.kim <giwoong.kim@samsung.com>
Mon, 23 Jul 2012 02:54:27 +0000 (11:54 +0900)
[Type] feature
[Module] Emulator / skin
[Priority] major
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

tizen/src/skin/client/native_src/Share.c [new file with mode: 0644]
tizen/src/skin/client/native_src/make_so_linux.sh [new file with mode: 0755]
tizen/src/skin/client/native_src/make_so_mac.sh [new file with mode: 0755]
tizen/src/skin/client/native_src/org_tizen_emulator_skin_EmulatorSkin.h [new file with mode: 0644]

diff --git a/tizen/src/skin/client/native_src/Share.c b/tizen/src/skin/client/native_src/Share.c
new file mode 100644 (file)
index 0000000..20a03e9
--- /dev/null
@@ -0,0 +1,66 @@
+#include <jni.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include "org_tizen_emulator_skin_EmulatorSkin.h"
+
+
+void *shared_memory = (void *)0;
+int shmid;
+
+
+JNIEXPORT jint JNICALL Java_org_tizen_emulator_skin_EmulatorSkin_shmget
+  (JNIEnv *env, jobject obj, jint vga_ram_size)
+{
+    int mykey = getuid();
+
+    shmid = shmget((key_t)mykey, (size_t)vga_ram_size, 0666 | IPC_CREAT);
+    if (shmid == -1) {
+        return 1;
+    }
+
+    /* We now make the shared memory accessible to the program. */
+    shared_memory = shmat(shmid, (void *)0, 0);
+    if (shared_memory == (void *)-1) {
+        return 2;
+    }
+
+    //printf("Memory attached at %X\n", (int)shared_memory);
+
+    return 0;
+}
+
+JNIEXPORT jint JNICALL Java_org_tizen_emulator_skin_EmulatorSkin_shmdt
+  (JNIEnv *env, jobject obj)
+{
+    /* Lastly, the shared memory is detached */
+    if (shmdt(shared_memory) == -1) {
+        return 1;
+    }
+
+    return 0;
+}
+
+JNIEXPORT jint JNICALL Java_org_tizen_emulator_skin_EmulatorSkin_getPixels
+  (JNIEnv *env, jobject obj, jintArray array)
+{
+    int i = 0;
+    int len = (*env)->GetArrayLength(env, array);
+    if (len <= 0) {
+        return -1;
+    }
+
+    int *framebuffer = (int *)shared_memory;
+
+    jint value = 0xFFFFFFFF;
+    for(i = 0; i < len; i++) {
+        value = framebuffer[i];
+        (*env)->SetIntArrayRegion(env, array, i, 1, &value); 
+    }
+
+    return len;
+}
+
diff --git a/tizen/src/skin/client/native_src/make_so_linux.sh b/tizen/src/skin/client/native_src/make_so_linux.sh
new file mode 100755 (executable)
index 0000000..05ccdf7
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+javah -classpath ../bin/:../lib/swt/gtk-linux/swt.jar -jni org.tizen.emulator.skin.EmulatorSkin
+rm ./org_tizen_emulator_skin_EmulatorSkin_PollFBThread.h
+rm ./org_tizen_emulator_skin_EmulatorSkin_SkinReopenPolicy.h
+gcc -c Share.c -o Share.o -I /usr/lib/jvm/jdk1.7.0_04/include -I /usr/lib/jvm/jdk1.7.0_04/include/linux
+gcc -shared Share.o -o libshared.so -fPIC
diff --git a/tizen/src/skin/client/native_src/make_so_mac.sh b/tizen/src/skin/client/native_src/make_so_mac.sh
new file mode 100755 (executable)
index 0000000..6f718d5
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+javah -classpath ../emulator-skin.jar:../lib/swt/cocoa-macosx64/swt.jar -jni org.tizen.emulator.skin.EmulatorSkin
+rm ./org_tizen_emulator_skin_EmulatorSkin_PollFBThread.h
+rm ./org_tizen_emulator_skin_EmulatorSkin_SkinReopenPolicy.h
+gcc -c Share.c -o Share.o -I/System/Library/Frameworks/JavaVM.framework/Headers
+gcc -dynamiclib Share.o -o libshared.dylib
diff --git a/tizen/src/skin/client/native_src/org_tizen_emulator_skin_EmulatorSkin.h b/tizen/src/skin/client/native_src/org_tizen_emulator_skin_EmulatorSkin.h
new file mode 100644 (file)
index 0000000..4ca55a4
--- /dev/null
@@ -0,0 +1,45 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_tizen_emulator_skin_EmulatorSkin */
+
+#ifndef _Included_org_tizen_emulator_skin_EmulatorSkin
+#define _Included_org_tizen_emulator_skin_EmulatorSkin
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef org_tizen_emulator_skin_EmulatorSkin_RED_MASK
+#define org_tizen_emulator_skin_EmulatorSkin_RED_MASK 16711680L
+#undef org_tizen_emulator_skin_EmulatorSkin_GREEN_MASK
+#define org_tizen_emulator_skin_EmulatorSkin_GREEN_MASK 65280L
+#undef org_tizen_emulator_skin_EmulatorSkin_BLUE_MASK
+#define org_tizen_emulator_skin_EmulatorSkin_BLUE_MASK 255L
+#undef org_tizen_emulator_skin_EmulatorSkin_COLOR_DEPTH
+#define org_tizen_emulator_skin_EmulatorSkin_COLOR_DEPTH 32L
+/*
+ * Class:     org_tizen_emulator_skin_EmulatorSkin
+ * Method:    shmget
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_tizen_emulator_skin_EmulatorSkin_shmget
+  (JNIEnv *, jobject, jint);
+
+/*
+ * Class:     org_tizen_emulator_skin_EmulatorSkin
+ * Method:    shmdt
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_org_tizen_emulator_skin_EmulatorSkin_shmdt
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_tizen_emulator_skin_EmulatorSkin
+ * Method:    getPixels
+ * Signature: ([I)I
+ */
+JNIEXPORT jint JNICALL Java_org_tizen_emulator_skin_EmulatorSkin_getPixels
+  (JNIEnv *, jobject, jintArray);
+
+#ifdef __cplusplus
+}
+#endif
+#endif