|
From: <eli...@us...> - 2008-05-01 09:37:29
|
Revision: 3061
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3061&view=rev
Author: elias_naur
Date: 2008-05-01 02:37:21 -0700 (Thu, 01 May 2008)
Log Message:
-----------
Windows: Split nChoosePixelFormat's applyPixelFormat() out in a seperate function
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsPeerInfo.java
trunk/LWJGL/src/native/windows/org_lwjgl_opengl_WindowsPeerInfo.c
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsPeerInfo.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsPeerInfo.java 2008-05-01 09:20:57 UTC (rev 3060)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsPeerInfo.java 2008-05-01 09:37:21 UTC (rev 3061)
@@ -49,10 +49,17 @@
private static native ByteBuffer createHandle();
protected void choosePixelFormat(int origin_x, int origin_y, PixelFormat pixel_format, IntBuffer pixel_format_caps, boolean use_hdc_bpp, boolean support_window, boolean support_pbuffer, boolean double_buffered) throws LWJGLException {
- nChoosePixelFormat(getHandle(), origin_x, origin_y, pixel_format, pixel_format_caps, use_hdc_bpp, support_window, support_pbuffer, double_buffered);
+ int pixel_format_id = nChoosePixelFormat(getHdc(), origin_x, origin_y, pixel_format, pixel_format_caps, use_hdc_bpp, support_window, support_pbuffer, double_buffered);
+ setPixelFormat(getHdc(), pixel_format_id);
}
- private static native void nChoosePixelFormat(ByteBuffer peer_info_handle, int origin_x, int origin_y, PixelFormat pixel_format, IntBuffer pixel_format_caps, boolean use_hdc_bpp, boolean support_window, boolean support_pbuffer, boolean double_buffered) throws LWJGLException;
+ private static native int nChoosePixelFormat(long hdc, int origin_x, int origin_y, PixelFormat pixel_format, IntBuffer pixel_format_caps, boolean use_hdc_bpp, boolean support_window, boolean support_pbuffer, boolean double_buffered) throws LWJGLException;
+ private static native void setPixelFormat(long hdc, int pixel_format) throws LWJGLException;
+ public final long getHdc() {
+ return nGetHdc(getHandle());
+ }
+ private static native long nGetHdc(ByteBuffer handle);
+
public final long getHwnd() {
return nGetHwnd(getHandle());
}
Modified: trunk/LWJGL/src/native/windows/org_lwjgl_opengl_WindowsPeerInfo.c
===================================================================
--- trunk/LWJGL/src/native/windows/org_lwjgl_opengl_WindowsPeerInfo.c 2008-05-01 09:20:57 UTC (rev 3060)
+++ trunk/LWJGL/src/native/windows/org_lwjgl_opengl_WindowsPeerInfo.c 2008-05-01 09:37:21 UTC (rev 3061)
@@ -47,18 +47,25 @@
return newJavaManagedByteBuffer(env, sizeof(WindowsPeerInfo));
}
-JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsPeerInfo_nChoosePixelFormat
- (JNIEnv *env, jclass clazz, jobject peer_info_handle, jint origin_x, jint origin_y, jobject pixel_format, jobject pixel_format_caps, jboolean use_hdc_bpp, jboolean window, jboolean pbuffer, jboolean double_buffer) {
- WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
+JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsPeerInfo_nChoosePixelFormat
+ (JNIEnv *env, jclass clazz, jlong hdc_ptr, jint origin_x, jint origin_y, jobject pixel_format, jobject pixel_format_caps, jboolean use_hdc_bpp, jboolean window, jboolean pbuffer, jboolean double_buffer) {
+ HDC hdc = (HDC)(INT_PTR)hdc_ptr;
jclass cls_pixel_format = (*env)->GetObjectClass(env, pixel_format);
bool floating_point = (bool)(*env)->GetBooleanField(env, pixel_format, (*env)->GetFieldID(env, cls_pixel_format, "floating_point", "Z"));
- int pixel_format_id = findPixelFormatOnDC(env, peer_info->drawable_hdc, origin_x, origin_y, pixel_format, pixel_format_caps, use_hdc_bpp, window, pbuffer, double_buffer, floating_point);
- if (pixel_format_id == -1)
- return;
- // Let it throw
- applyPixelFormat(env, peer_info->drawable_hdc, pixel_format_id);
+ return findPixelFormatOnDC(env, hdc, origin_x, origin_y, pixel_format, pixel_format_caps, use_hdc_bpp, window, pbuffer, double_buffer, floating_point);
}
+JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsPeerInfo_setPixelFormat
+ (JNIEnv *env, jclass clazz, jlong hdc_ptr, jint pixel_format) {
+ HDC hdc = (HDC)(INT_PTR)hdc_ptr;
+ applyPixelFormat(env, hdc, pixel_format);
+}
+
+JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsPeerInfo_nGetHdc(JNIEnv *env, jclass unused, jobject peer_info_handle) {
+ WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
+ return (intptr_t)peer_info->drawable_hdc;
+}
+
JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsPeerInfo_nGetHwnd(JNIEnv *env, jclass unused, jobject peer_info_handle) {
WindowsPeerInfo *peer_info = (WindowsPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
return (intptr_t)peer_info->u.hwnd;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|