diff --git a/src/java/org/lwjgl/openal/BaseEAX.java b/src/java/org/lwjgl/openal/BaseEAX.java index f6c9c970..53866327 100644 --- a/src/java/org/lwjgl/openal/BaseEAX.java +++ b/src/java/org/lwjgl/openal/BaseEAX.java @@ -45,12 +45,6 @@ */ public abstract class BaseEAX { - /** GUID for buffer */ - public static int BUFFER_GUID; - - /** GUID for listener */ - public static int LISTENER_GUID; - /** Has the EAX object been created? */ protected static boolean created; diff --git a/src/java/org/lwjgl/openal/CoreEAX.java b/src/java/org/lwjgl/openal/CoreEAX.java index 600ff1f6..23ef14d4 100644 --- a/src/java/org/lwjgl/openal/CoreEAX.java +++ b/src/java/org/lwjgl/openal/CoreEAX.java @@ -41,6 +41,12 @@ */ public class CoreEAX extends BaseEAX implements BaseEAXConstants { + /** GUID for buffer */ + public static int BUFFER_GUID; + + /** GUID for listener */ + public static int LISTENER_GUID; + /** Creates a new instance of CoreEAX */ public CoreEAX() { } @@ -50,6 +56,7 @@ public class CoreEAX extends BaseEAX implements BaseEAXConstants { */ protected void init() { determineAvailableExtensions(); + setGUID(); } /** @@ -57,6 +64,11 @@ public class CoreEAX extends BaseEAX implements BaseEAXConstants { */ protected native void determineAvailableExtensions(); + /** + * Sets the GUID's for the buffer and listener objects + */ + protected native void setGUID(); + /** * Retrieves an EAX Value * diff --git a/src/native/common/org_lwjgl_openal_CoreEAX.h b/src/native/common/org_lwjgl_openal_CoreEAX.h index c96f9d06..29ae62f2 100644 --- a/src/native/common/org_lwjgl_openal_CoreEAX.h +++ b/src/native/common/org_lwjgl_openal_CoreEAX.h @@ -50,6 +50,14 @@ extern "C" { JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreEAX_determineAvailableExtensions (JNIEnv *, jobject); +/* + * Class: org_lwjgl_openal_CoreEAX + * Method: setGUID + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreEAX_setGUID + (JNIEnv *, jobject); + /* * Class: org_lwjgl_openal_CoreEAX * Method: eaxGet diff --git a/src/native/win32/org_lwjgl_opengl_CoreEAX.cpp b/src/native/win32/org_lwjgl_opengl_CoreEAX.cpp index 05534cff..e143d596 100644 --- a/src/native/win32/org_lwjgl_opengl_CoreEAX.cpp +++ b/src/native/win32/org_lwjgl_opengl_CoreEAX.cpp @@ -104,6 +104,21 @@ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreEAX_determineAvailableExtension #endif } +JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreEAX_setGUID (JNIEnv *env, jobject obj) { +#ifdef _WIN32 + //get class/fields + jclass eax_class = env->FindClass("org/lwjgl/openal/CoreEAX"); + jfieldID eaxBuffer_field = env->GetStaticFieldID(eax_class, "BUFFER_GUID", "I"); + jfieldID eaxListener_field = env->GetStaticFieldID(eax_class, "LISTENER_GUID", "I"); + + //set fields + env->SetStaticIntField(eax_class, eaxBuffer_field, (jint) &DSPROPSETID_EAX20_BufferProperties); + env->SetStaticIntField(eax_class, eaxListener_field, (jint) &DSPROPSETID_EAX20_ListenerProperties); +#else + ThrowException(env, "EAX extensions not supported"); +#endif +} + /* * This function retrieves an EAX value. *