From c1f9ab0e934fac3c27f59c08368c125a712acd42 Mon Sep 17 00:00:00 2001 From: "giwoong.kim" Date: Mon, 23 Jul 2012 11:54:27 +0900 Subject: [PATCH] [Title] added jni files [Type] feature [Module] Emulator / skin [Priority] major [Jira#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] --- tizen/src/skin/client/native_src/Share.c | 66 ++++++++++++++++++++++ tizen/src/skin/client/native_src/make_so_linux.sh | 6 ++ tizen/src/skin/client/native_src/make_so_mac.sh | 6 ++ .../org_tizen_emulator_skin_EmulatorSkin.h | 45 +++++++++++++++ 4 files changed, 123 insertions(+) create mode 100644 tizen/src/skin/client/native_src/Share.c create mode 100755 tizen/src/skin/client/native_src/make_so_linux.sh create mode 100755 tizen/src/skin/client/native_src/make_so_mac.sh create mode 100644 tizen/src/skin/client/native_src/org_tizen_emulator_skin_EmulatorSkin.h diff --git a/tizen/src/skin/client/native_src/Share.c b/tizen/src/skin/client/native_src/Share.c new file mode 100644 index 0000000..20a03e9 --- /dev/null +++ b/tizen/src/skin/client/native_src/Share.c @@ -0,0 +1,66 @@ +#include +#include +#include +#include +#include +#include +#include +#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 index 0000000..05ccdf7 --- /dev/null +++ b/tizen/src/skin/client/native_src/make_so_linux.sh @@ -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 index 0000000..6f718d5 --- /dev/null +++ b/tizen/src/skin/client/native_src/make_so_mac.sh @@ -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 index 0000000..4ca55a4 --- /dev/null +++ b/tizen/src/skin/client/native_src/org_tizen_emulator_skin_EmulatorSkin.h @@ -0,0 +1,45 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* 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 -- 2.7.4