*** empty log message ***
This commit is contained in:
parent
1ba24e9bdf
commit
38c18eb35c
|
@ -7,7 +7,7 @@ NATIVE = \
|
||||||
org_lwjgl_Display.cpp \
|
org_lwjgl_Display.cpp \
|
||||||
org_lwjgl_Sys.cpp \
|
org_lwjgl_Sys.cpp \
|
||||||
# org_lwjgl_input_Controller.cpp \
|
# org_lwjgl_input_Controller.cpp \
|
||||||
# org_lwjgl_input_Keyboard.cpp \
|
org_lwjgl_input_Keyboard.cpp \
|
||||||
# org_lwjgl_input_Mouse.cpp \
|
# org_lwjgl_input_Mouse.cpp \
|
||||||
# org_lwjgl_input_Cursor.cpp \
|
# org_lwjgl_input_Cursor.cpp \
|
||||||
org_lwjgl_opengl_Window.cpp
|
org_lwjgl_opengl_Window.cpp
|
||||||
|
|
|
@ -39,6 +39,11 @@
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <IOKit/IOKitLib.h>
|
||||||
|
#include <IOKit/hid/IOHIDKeys.h>
|
||||||
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "tools.h"
|
||||||
#include "org_lwjgl_input_Keyboard.h"
|
#include "org_lwjgl_input_Keyboard.h"
|
||||||
|
|
||||||
#define KEYBOARD_BUFFER_SIZE 50
|
#define KEYBOARD_BUFFER_SIZE 50
|
||||||
|
@ -55,6 +60,36 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_initIDs
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void printCFString(CFStringRef str) {
|
||||||
|
CFIndex buffer_size = CFStringGetLength(str) + 1;
|
||||||
|
char * buffer = (char *)malloc(buffer_size);
|
||||||
|
if (buffer != NULL) {
|
||||||
|
if (CFStringGetCString(str, buffer, buffer_size, CFStringGetSystemEncoding()))
|
||||||
|
printf("%s", buffer);
|
||||||
|
free(buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void printCFNumber(CFNumberRef num) {
|
||||||
|
long number;
|
||||||
|
|
||||||
|
if (CFNumberGetValue(num, kCFNumberLongType, &number))
|
||||||
|
printf("0x%lx (%ld)", number, number);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void printProperty(CFDictionaryRef dict, CFStringRef key) {
|
||||||
|
CFTypeRef val = CFDictionaryGetValue(dict, key);
|
||||||
|
if (val != NULL) {
|
||||||
|
CFTypeID type = CFGetTypeID(val);
|
||||||
|
if (type == CFArrayGetTypeID()) printf("array\n");
|
||||||
|
else if (type == CFBooleanGetTypeID()) printf("boolean\n");
|
||||||
|
else if (type == CFDictionaryGetTypeID()) printf("dictionary\n");
|
||||||
|
else if (type == CFNumberGetTypeID()) printCFNumber((CFNumberRef)val);
|
||||||
|
else if (type == CFStringGetTypeID()) printCFString((CFStringRef)val);
|
||||||
|
else printf("<unknown object type>\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_lwjgl_input_Keyboard
|
* Class: org_lwjgl_input_Keyboard
|
||||||
* Method: nCreate
|
* Method: nCreate
|
||||||
|
@ -63,6 +98,31 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_initIDs
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nCreate
|
JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nCreate
|
||||||
(JNIEnv * env, jclass clazz)
|
(JNIEnv * env, jclass clazz)
|
||||||
{
|
{
|
||||||
|
io_iterator_t device_iterator;
|
||||||
|
io_object_t hid_device;
|
||||||
|
kern_return_t kern_err;
|
||||||
|
CFMutableDictionaryRef dev_props;
|
||||||
|
CFMutableDictionaryRef matching_dic = IOServiceMatching(kIOHIDDeviceKey);
|
||||||
|
IOReturn err = IOServiceGetMatchingServices(kIOMasterPortDefault, matching_dic, &device_iterator);
|
||||||
|
if (err != kIOReturnSuccess) {
|
||||||
|
throwException(env, "Could not find matching devices");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while ((hid_device = IOIteratorNext(device_iterator)) != NULL) {
|
||||||
|
kern_err = IORegistryEntryCreateCFProperties(hid_device, &dev_props, kCFAllocatorDefault, kNilOptions);
|
||||||
|
IOObjectRelease(hid_device);
|
||||||
|
if (kern_err == KERN_SUCCESS && dev_props != NULL) {
|
||||||
|
printf("Device found: ");
|
||||||
|
printProperty(dev_props, CFSTR(kIOHIDProductKey));
|
||||||
|
printf(" usage ");
|
||||||
|
printProperty(dev_props, CFSTR(kIOHIDPrimaryUsageKey));
|
||||||
|
printf(" usage page ");
|
||||||
|
printProperty(dev_props, CFSTR(kIOHIDPrimaryUsagePageKey));
|
||||||
|
printf("\n");
|
||||||
|
CFRelease(dev_props);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IOObjectRelease(device_iterator);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -90,16 +150,17 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nPoll
|
||||||
* Method: nRead
|
* Method: nRead
|
||||||
* Signature: (I)V
|
* Signature: (I)V
|
||||||
*/
|
*/
|
||||||
JNIEXPORT int JNICALL Java_org_lwjgl_input_Keyboard_nRead
|
JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nRead
|
||||||
(JNIEnv * env, jclass clazz)
|
(JNIEnv * env, jclass clazz)
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_lwjgl_input_Keyboard
|
* Class: org_lwjgl_input_Keyboard
|
||||||
* Method: nEnableTranslation
|
* Method: nEnableTranslation
|
||||||
* Signature: ()I
|
* Signature: ()I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nEnableTranslation
|
JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nEnableTranslation
|
||||||
(JNIEnv *env, jclass clazz)
|
(JNIEnv *env, jclass clazz)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,154 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002 Light Weight Java Game Library Project
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are
|
|
||||||
* met:
|
|
||||||
*
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
*
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* * Neither the name of 'Light Weight Java Game Library' nor the names of
|
|
||||||
* its contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
||||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* $Id$
|
|
||||||
*
|
|
||||||
* Base OSX functionality for GL.
|
|
||||||
*
|
|
||||||
* @author Gregory Pierce <me@gregorypierce.com>
|
|
||||||
* @version $Revision$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "extgl.h"
|
|
||||||
#include "org_lwjgl_opengl_BaseGL.h"
|
|
||||||
#include <ApplicationServices/ApplicationServices.h>
|
|
||||||
#include <OpenGL/OpenGL.h>
|
|
||||||
|
|
||||||
|
|
||||||
static CGLContextObj contextObj;
|
|
||||||
static CGDirectDisplayID displayID = kCGDirectMainDisplay;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Utility function to throw an Exception
|
|
||||||
*/
|
|
||||||
void throwException(JNIEnv * env, const char * err)
|
|
||||||
{
|
|
||||||
jclass cls = env->FindClass("java/lang/Exception");
|
|
||||||
env->ThrowNew(cls, err);
|
|
||||||
env->DeleteLocalRef(cls);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Class: org_lwjgl_opengl_BaseGL
|
|
||||||
* Method: nCreate
|
|
||||||
* Signature: (Ljava/lang/String;IIIIIIIIZ)V
|
|
||||||
*/
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_BaseGL_nCreate
|
|
||||||
(JNIEnv * env, jobject obj, jstring title, jint x, jint y, jint width, jint height, jint bpp, jint alpha, jint depth, jint stencil, jboolean fullscreen)
|
|
||||||
{
|
|
||||||
CGLPixelFormatObj pixelFormatObj;
|
|
||||||
long numPixelFormats;
|
|
||||||
CFDictionaryRef displayMode;
|
|
||||||
|
|
||||||
if( extgl_Open() != 0 )
|
|
||||||
{
|
|
||||||
throwException( env, "Could not load gl libs" );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
displayMode = CGDisplayBestModeForParametersAndRefreshRate( displayID,
|
|
||||||
bpp,
|
|
||||||
width, height,
|
|
||||||
60,
|
|
||||||
NULL );
|
|
||||||
|
|
||||||
CGDisplaySwitchToMode( displayID, displayMode );
|
|
||||||
|
|
||||||
CGOpenGLDisplayMask displayMask = CGDisplayIDToOpenGLDisplayMask( kCGDirectMainDisplay ) ;
|
|
||||||
CGLPixelFormatAttribute attribs[] =
|
|
||||||
{
|
|
||||||
kCGLPFAFullScreen,
|
|
||||||
kCGLPFADoubleBuffer,
|
|
||||||
kCGLPFADisplayMask,
|
|
||||||
displayMask,
|
|
||||||
NULL
|
|
||||||
} ;
|
|
||||||
long swapInterval;
|
|
||||||
|
|
||||||
CGLChoosePixelFormat( attribs, &pixelFormatObj, &numPixelFormats );
|
|
||||||
if ( pixelFormatObj != NULL )
|
|
||||||
{
|
|
||||||
CGLCreateContext( pixelFormatObj, NULL, &contextObj );
|
|
||||||
CGLDestroyPixelFormat( pixelFormatObj );
|
|
||||||
|
|
||||||
swapInterval = 1;
|
|
||||||
CGLSetParameter( contextObj, kCGLCPSwapInterval, &swapInterval );
|
|
||||||
CGLSetCurrentContext( contextObj );
|
|
||||||
CGLSetFullScreen( contextObj );
|
|
||||||
if (extgl_Initialize() != 0)
|
|
||||||
{
|
|
||||||
// TODO: destroy stuff created this far
|
|
||||||
throwException( env, "Could not init gl function pointers\n");
|
|
||||||
CGLSetCurrentContext( NULL );
|
|
||||||
CGLClearDrawable( contextObj );
|
|
||||||
CGLDestroyContext( contextObj );
|
|
||||||
contextObj = NULL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throwException( env, "Failed to choose pixel format\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Class: org_lwjgl_opengl_BaseGL
|
|
||||||
* Method: nDestroyGL
|
|
||||||
* Signature: ()V
|
|
||||||
*/
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_BaseGL_nDestroyGL
|
|
||||||
(JNIEnv * env, jobject obj)
|
|
||||||
{
|
|
||||||
if ( contextObj != NULL )
|
|
||||||
{
|
|
||||||
CGLSetCurrentContext( NULL );
|
|
||||||
CGLClearDrawable( contextObj );
|
|
||||||
CGLDestroyContext( contextObj );
|
|
||||||
|
|
||||||
contextObj = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Class: org_lwjgl_opengl_BaseGL
|
|
||||||
* Method: swapBuffers
|
|
||||||
* Signature: ()V
|
|
||||||
*/
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_BaseGL_swapBuffers
|
|
||||||
(JNIEnv *, jobject)
|
|
||||||
{
|
|
||||||
CGLFlushDrawable( contextObj );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,24 +40,14 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <Carbon/Carbon.h>
|
#include <Carbon/Carbon.h>
|
||||||
#include <JavaVM/jni.h>
|
|
||||||
#include "org_lwjgl_opengl_Window.h"
|
#include "org_lwjgl_opengl_Window.h"
|
||||||
#include "extgl.h"
|
#include "extgl.h"
|
||||||
|
#include "tools.h"
|
||||||
|
|
||||||
static WindowRef win_ref;
|
static WindowRef win_ref;
|
||||||
static AGLContext context;
|
static AGLContext context;
|
||||||
static bool close_requested;
|
static bool close_requested;
|
||||||
|
|
||||||
/*
|
|
||||||
* Utility function to throw an Exception
|
|
||||||
*/
|
|
||||||
static void throwException(JNIEnv * env, const char * err)
|
|
||||||
{
|
|
||||||
jclass cls = env->FindClass("java/lang/Exception");
|
|
||||||
env->ThrowNew(cls, err);
|
|
||||||
env->DeleteLocalRef(cls);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void setWindowTitle(JNIEnv *env, jstring title_obj) {
|
static void setWindowTitle(JNIEnv *env, jstring title_obj) {
|
||||||
const char* title = env->GetStringUTFChars(title_obj, NULL);
|
const char* title = env->GetStringUTFChars(title_obj, NULL);
|
||||||
CFStringRef cf_title = CFStringCreateWithCString(NULL, title, kCFStringEncodingUTF8);
|
CFStringRef cf_title = CFStringCreateWithCString(NULL, title, kCFStringEncodingUTF8);
|
||||||
|
@ -184,7 +174,6 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate(JNIEnv *env, jclass
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_update
|
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_update
|
||||||
(JNIEnv *env, jclass clazz)
|
(JNIEnv *env, jclass clazz)
|
||||||
{
|
{
|
||||||
RunApplicationEventLoop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_swapBuffers(JNIEnv * env, jclass clazz)
|
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_swapBuffers(JNIEnv * env, jclass clazz)
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#include "tools.h"
|
||||||
|
|
||||||
|
void throwException(JNIEnv* env, const char* msg) {
|
||||||
|
jclass cls = env->FindClass("java/lang/Exception");
|
||||||
|
env->ThrowNew(cls, err);
|
||||||
|
env->DeleteLocalRef(cls);
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef TOOLS_H
|
||||||
|
#define TOOLS_H
|
||||||
|
|
||||||
|
#include <JavaVM/jni.h>
|
||||||
|
|
||||||
|
void throwException(JNIEnv* env, const char* msg);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue