[kaffe] JSDL works well under Kaffe
jserv@linux2.cc.ntu.edu.tw
jserv@linux2.cc.ntu.edu.tw
Wed Mar 17 23:53:03 2004
--bg08WKrSYDhXBjb5
Content-Type: text/plain; charset=big5
Content-Disposition: inline
Hello all devlopers,
I just let JSDL (Java binding for SDL [1]) run under Kaffe, and it
works vey well. But I also mentioned that the JNI implemented in Kaffe
is a bit poor, and lacks some entries needed by JSDL:
- (*env)->DeleteWeakGlobalRef(env,objCallback)
- (*env)->GetStringUTFRegion(env,s,0,lenString,str)
So that I have to comment the calls of the above to get JSDL compiled.
I took some screenshots for JSDL running under Kaffe 1.1.x-cvs:
http://jserv.sayya.org/kaffe/screenshots/jsdl-kaffe.png
http://jserv.sayya.org/kaffe/screenshots/jsdl-kaffe2.png
http://jserv.sayya.org/kaffe/screenshots/jsdl-kaffe3.png
http://jserv.sayya.org/kaffe/screenshots/jsdl-kaffe4.png
What I modified JSDL is attached in the mail, and I hope it would be
useful.
cheers,
Jim Huang <jimchyun@ccns.ncku.edu.tw>
[1] http://jsdl.sourceforge.net/
--bg08WKrSYDhXBjb5
Content-Type: text/plain; charset=big5
Content-Disposition: attachment; filename="jsdl-kaffe.diff"
diff -urN jsdl/sdl/jni/compilejni.sh jsdl-kaffe/sdl/jni/compilejni.sh
--- jsdl/sdl/jni/compilejni.sh 2002-09-27 06:26:41.000000000 +0800
+++ jsdl-kaffe/sdl/jni/compilejni.sh 2004-03-18 14:12:36.000000000 +0800
@@ -1,20 +1,25 @@
#!/bin/sh -x
EXTERNAL_LIBS=/usr
-JDK_HOME=/usr/java/j2sdk1.4.0_01
+JDK_HOME=/opt
-SDL_DIR=/usr/include/SDL
-SMPEG_DIR=/usr/include/smpeg
-SDL_LIB_DIR=/usr/lib
-SDL_IMAGE_DIR=/usr/include/SDL
+SDL_DIR=`sdl-config --cflags`
+SDL_LIB_DIR=`sdl-config --libs`
+
+SMPEG_DIR=`smpeg-config --cflags`
+SMPEG_LIB_DIR=`smpeg-config --libs`
+
+SDL_IMAGE_DIR=`sdl-config --cflags`
-SMPEG_LIB_DIR=/usr/lib/smpeg
# SFont support
SFONT_INC_DIR=`pwd`
SFONT_SRC_DIR=`pwd`
-gcc -DUSING_GCC -I$SDL_DIR -I${SDL_IMAGE_DIR} -I$SMPEG_DIR -I${SFONT_INC_DIR} -I${JDK_HOME}/include -I${JDK_HOME}/include/linux -I. -c *.c
+gcc -DUSING_GCC \
+ $SDL_DIR ${SDL_IMAGE_DIR} $SMPEG_DIR ${SFONT_INC_DIR} \
+ -I${JDK_HOME}/include -I${JDK_HOME}/include/linux -I. -c *.c
-gcc -DUSING_GCC -shared -o libSDL4Java.so *.o -lSDL -lSDL_image -lsmpeg -L$SDL_LIB_DIR -L$SMPEG_LIB_DIR
+gcc -DUSING_GCC -shared -o libSDL4Java.so *.o -lSDL_image \
+ $SDL_LIB_DIR $SMPEG_LIB_DIR
mv *.so ../..
diff -urN jsdl/sdl/jni/SDLAudio.c jsdl-kaffe/sdl/jni/SDLAudio.c
--- jsdl/sdl/jni/SDLAudio.c 2001-05-28 01:12:17.000000000 +0800
+++ jsdl-kaffe/sdl/jni/SDLAudio.c 2004-03-18 15:04:54.000000000 +0800
@@ -64,7 +64,7 @@
*/
JNIEXPORT void JNICALL Java_sdl_audio_SDLAudio_SDLCloseAudio(JNIEnv * env, jobject obj)
{
- (*env)->DeleteWeakGlobalRef(env,objCallback);
+ // FIXME: (*env)->DeleteWeakGlobalRef(env,objCallback);
SDL_CloseAudio();
}
diff -urN jsdl/sdl/jni/SDLMpeg.c jsdl-kaffe/sdl/jni/SDLMpeg.c
--- jsdl/sdl/jni/SDLMpeg.c 2001-05-28 01:12:17.000000000 +0800
+++ jsdl-kaffe/sdl/jni/SDLMpeg.c 2004-03-18 14:11:07.000000000 +0800
@@ -1,5 +1,5 @@
#include "SDLMpeg.h"
-#include "smpeg.h"
+#include <smpeg.h>
#include "Accessors.h"
#ifdef WIN32
diff -urN jsdl/sdl/jni/SDLSFont.c jsdl-kaffe/sdl/jni/SDLSFont.c
--- jsdl/sdl/jni/SDLSFont.c 2002-07-23 09:21:18.000000000 +0800
+++ jsdl-kaffe/sdl/jni/SDLSFont.c 2004-03-18 15:08:58.000000000 +0800
@@ -47,7 +47,7 @@
lenString = (*env)->GetStringLength(env,s);
str = (char *)malloc(sizeof(char)*(lenString + 1));
- (*env)->GetStringUTFRegion(env,s,0,lenString,str);
+ // FIXME: (*env)->GetStringUTFRegion(env,s,0,lenString,str);
PutString(surface,x,y,str);
@@ -64,7 +64,7 @@
char *str=NULL;
lenString = (*env)->GetStringLength(env,s);
str = (char *)malloc(sizeof(char)*(lenString + 1));
- (*env)->GetStringUTFRegion(env,s,0,lenString,str);
+ // FIXME: (*env)->GetStringUTFRegion(env,s,0,lenString,str);
return (jint)TextWidth(str);
@@ -89,7 +89,7 @@
lenString = (*env)->GetStringLength(env,s);
str = (char *)malloc(sizeof(char)*(lenString + 1));
- (*env)->GetStringUTFRegion(env,s,0,lenString,str);
+ // FIXME: (*env)->GetStringUTFRegion(env,s,0,lenString,str);
XCenteredString (surface,y,str);
@@ -113,7 +113,7 @@
surface = ((JSDLSurface *)handle)->surface;
lenString = (*env)->GetStringLength(env,s);
str = (char *)malloc(sizeof(char)*(lenString + 1));
- (*env)->GetStringUTFRegion(env,s,0,lenString,str);
+ // FIXME: (*env)->GetStringUTFRegion(env,s,0,lenString,str);
SFont_Input(surface,x,y,width,str);
DBG1("--JNI-- SDLSFont:getInputString Before setting m_INputString \n");
diff -urN jsdl/sdl/jni/SDLWindow.c jsdl-kaffe/sdl/jni/SDLWindow.c
--- jsdl/sdl/jni/SDLWindow.c 2001-05-28 01:12:17.000000000 +0800
+++ jsdl-kaffe/sdl/jni/SDLWindow.c 2004-03-18 15:09:21.000000000 +0800
@@ -22,8 +22,8 @@
lenIcon = (*env)->GetStringLength(env,icon);
strTitle = (char *)malloc(sizeof(char)*(lenTitle +1));
strIcon = (char *)malloc(sizeof(char)*(lenIcon + 1));
- (*env)->GetStringUTFRegion(env,icon,0,lenIcon,strIcon);
- (*env)->GetStringUTFRegion(env,title,0,lenTitle,strTitle);
+ // FIXME: (*env)->GetStringUTFRegion(env,icon,0,lenIcon,strIcon);
+ // FIXME: (*env)->GetStringUTFRegion(env,title,0,lenTitle,strTitle);
SDL_WM_SetCaption(strTitle,strIcon);
--bg08WKrSYDhXBjb5--