--- /dev/null
+#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;
+}
+
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+/* 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