Windows: Removed directinput files, since they are now unused. Fixed headers build.xml target
This commit is contained in:
parent
e50dc04191
commit
657bd156e2
|
@ -435,7 +435,6 @@
|
||||||
<target name="headers" description="invokes javah on java classes" depends="compile">
|
<target name="headers" description="invokes javah on java classes" depends="compile">
|
||||||
<!-- platform specific classes -->
|
<!-- platform specific classes -->
|
||||||
<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/linux" force="yes">
|
<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/linux" force="yes">
|
||||||
<class name="org.lwjgl.opengl.LinuxAWTInput" />
|
|
||||||
<class name="org.lwjgl.opengl.LinuxEvent" />
|
<class name="org.lwjgl.opengl.LinuxEvent" />
|
||||||
<class name="org.lwjgl.opengl.LinuxMouse" />
|
<class name="org.lwjgl.opengl.LinuxMouse" />
|
||||||
<class name="org.lwjgl.opengl.LinuxKeyboard" />
|
<class name="org.lwjgl.opengl.LinuxKeyboard" />
|
||||||
|
@ -450,12 +449,7 @@
|
||||||
|
|
||||||
<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/windows" force="yes">
|
<javah classpath="${lwjgl.bin}" destdir="${lwjgl.src.native}/windows" force="yes">
|
||||||
<!-- OpenGL -->
|
<!-- OpenGL -->
|
||||||
<class name="org.lwjgl.opengl.WindowsAWTInput" />
|
|
||||||
<class name="org.lwjgl.opengl.WindowsKeyboard" />
|
<class name="org.lwjgl.opengl.WindowsKeyboard" />
|
||||||
<class name="org.lwjgl.opengl.WindowsDirectInput8" />
|
|
||||||
<class name="org.lwjgl.opengl.WindowsDirectInputDevice8" />
|
|
||||||
<class name="org.lwjgl.opengl.WindowsDirectInput3" />
|
|
||||||
<class name="org.lwjgl.opengl.WindowsDirectInputDevice3" />
|
|
||||||
<class name="org.lwjgl.opengl.WindowsPbufferPeerInfo" />
|
<class name="org.lwjgl.opengl.WindowsPbufferPeerInfo" />
|
||||||
<class name="org.lwjgl.opengl.WindowsDisplay" />
|
<class name="org.lwjgl.opengl.WindowsDisplay" />
|
||||||
<class name="org.lwjgl.opengl.WindowsRegistry" />
|
<class name="org.lwjgl.opengl.WindowsRegistry" />
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<property name="native" location="../../src/native"/>
|
<property name="native" location="../../src/native"/>
|
||||||
<property environment="env"/>
|
<property environment="env"/>
|
||||||
<property name="dxhome" location="${env.DXSDK_DIR}"/>
|
<property name="dxhome" location="${env.DXSDK_DIR}"/>
|
||||||
<property name="sdkhome" location="${env.MSSdk}"/>
|
<property name="sdkhome" location="${env.MSSDK}"/>
|
||||||
<property name="program_files" location="${env.ProgramFiles}"/>
|
<property name="program_files" location="${env.ProgramFiles}"/>
|
||||||
<property name="alhome" location="${program_files}\OpenAL 1.1 with EFX SDK"/>
|
<property name="alhome" location="${program_files}\OpenAL 1.1 with EFX SDK"/>
|
||||||
<property name="dllname" value="lwjgl.dll"/>
|
<property name="dllname" value="lwjgl.dll"/>
|
||||||
|
@ -53,6 +53,9 @@
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="compile">
|
<target name="compile">
|
||||||
|
<echo message="${dxhome}"/>
|
||||||
|
<echo message="${sdkhome}"/>
|
||||||
|
<echo message="${program_files}"/>
|
||||||
<property name="libs" value="Kernel32.lib ole32.lib dinput.lib dxguid.lib OpenGL32.Lib Version.lib user32.lib Gdi32.lib Advapi32.lib jawt.lib delayimp.lib winmm.lib"/>
|
<property name="libs" value="Kernel32.lib ole32.lib dinput.lib dxguid.lib OpenGL32.Lib Version.lib user32.lib Gdi32.lib Advapi32.lib jawt.lib delayimp.lib winmm.lib"/>
|
||||||
<antcall target="compile_dir"/>
|
<antcall target="compile_dir"/>
|
||||||
<antcall target="link"/>
|
<antcall target="link"/>
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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.
|
|
||||||
*/
|
|
||||||
package org.lwjgl.opengl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the DirectInput base class
|
|
||||||
* @author elias_naur
|
|
||||||
*/
|
|
||||||
|
|
||||||
import org.lwjgl.LWJGLException;
|
|
||||||
|
|
||||||
abstract class WindowsDirectInput {
|
|
||||||
public final static int KEYBOARD_TYPE = 1;
|
|
||||||
public final static int MOUSE_TYPE = 2;
|
|
||||||
|
|
||||||
/* DirectInput constants */
|
|
||||||
public final static int DI_OK = 0x00000000;
|
|
||||||
public final static int DI_NOEFFECT = 0x00000001;
|
|
||||||
public final static int DI_PROPNOEFFECT = 0x00000001;
|
|
||||||
public final static int DI_POLLEDDEVICE = 0x00000002;
|
|
||||||
|
|
||||||
public final static int DI_DOWNLOADSKIPPED = 0x00000003;
|
|
||||||
public final static int DI_EFFECTRESTARTED = 0x00000004;
|
|
||||||
public final static int DI_TRUNCATED = 0x00000008;
|
|
||||||
public final static int DI_SETTINGSNOTSAVED = 0x0000000B;
|
|
||||||
public final static int DI_TRUNCATEDANDRESTARTED = 0x0000000C;
|
|
||||||
|
|
||||||
public final static int DI_BUFFEROVERFLOW = 0x00000001;
|
|
||||||
public final static int DIERR_INPUTLOST = 0x8007001E;
|
|
||||||
public final static int DIERR_NOTACQUIRED = 0x8007001C;
|
|
||||||
public final static int DIERR_OTHERAPPHASPRIO = 0x80070005;
|
|
||||||
|
|
||||||
private final long di_interface;
|
|
||||||
|
|
||||||
public WindowsDirectInput(long hinst) throws LWJGLException {
|
|
||||||
di_interface = createDirectInput(hinst);
|
|
||||||
}
|
|
||||||
protected abstract long createDirectInput(long hinst) throws LWJGLException;
|
|
||||||
|
|
||||||
public WindowsDirectInputDevice createDevice(int type) throws LWJGLException {
|
|
||||||
return createDevice(di_interface, type);
|
|
||||||
}
|
|
||||||
protected abstract WindowsDirectInputDevice createDevice(long di_interface, int type) throws LWJGLException;
|
|
||||||
|
|
||||||
public void release() {
|
|
||||||
release(di_interface);
|
|
||||||
}
|
|
||||||
protected abstract void release(long di_interface);
|
|
||||||
}
|
|
|
@ -1,59 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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.
|
|
||||||
*/
|
|
||||||
package org.lwjgl.opengl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the DirectInput3 interface
|
|
||||||
* @author elias_naur
|
|
||||||
*/
|
|
||||||
|
|
||||||
import org.lwjgl.LWJGLException;
|
|
||||||
|
|
||||||
final class WindowsDirectInput3 extends WindowsDirectInput {
|
|
||||||
/* Re-define device types to get them included in the native headers */
|
|
||||||
public final static int KEYBOARD_TYPE = WindowsDirectInput.KEYBOARD_TYPE;
|
|
||||||
public final static int MOUSE_TYPE = WindowsDirectInput.MOUSE_TYPE;
|
|
||||||
|
|
||||||
public WindowsDirectInput3(long hinst) throws LWJGLException {
|
|
||||||
super(hinst);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected native long createDirectInput(long hinst) throws LWJGLException;
|
|
||||||
|
|
||||||
protected WindowsDirectInputDevice createDevice(long di_interface, int type) throws LWJGLException {
|
|
||||||
long device = nCreateDevice(di_interface, type);
|
|
||||||
return new WindowsDirectInputDevice3(device);
|
|
||||||
}
|
|
||||||
private static native long nCreateDevice(long di_interface, int type) throws LWJGLException;
|
|
||||||
|
|
||||||
protected native void release(long di_interface);
|
|
||||||
}
|
|
|
@ -1,59 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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.
|
|
||||||
*/
|
|
||||||
package org.lwjgl.opengl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the DirectInput8 interface
|
|
||||||
* @author elias_naur
|
|
||||||
*/
|
|
||||||
|
|
||||||
import org.lwjgl.LWJGLException;
|
|
||||||
|
|
||||||
final class WindowsDirectInput8 extends WindowsDirectInput {
|
|
||||||
/* Re-define device types to get them included in the native headers */
|
|
||||||
public final static int KEYBOARD_TYPE = WindowsDirectInput.KEYBOARD_TYPE;
|
|
||||||
public final static int MOUSE_TYPE = WindowsDirectInput.MOUSE_TYPE;
|
|
||||||
|
|
||||||
public WindowsDirectInput8(long hinst) throws LWJGLException {
|
|
||||||
super(hinst);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected native long createDirectInput(long hinst) throws LWJGLException;
|
|
||||||
|
|
||||||
protected WindowsDirectInputDevice createDevice(long di_interface, int type) throws LWJGLException {
|
|
||||||
long device = nCreateDevice(di_interface, type);
|
|
||||||
return new WindowsDirectInputDevice8(device);
|
|
||||||
}
|
|
||||||
private static native long nCreateDevice(long di_interface, int type) throws LWJGLException;
|
|
||||||
|
|
||||||
protected native void release(long di_interface);
|
|
||||||
}
|
|
|
@ -1,132 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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.
|
|
||||||
*/
|
|
||||||
package org.lwjgl.opengl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the DirectInputDevice interface
|
|
||||||
* @author elias_naur
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.nio.IntBuffer;
|
|
||||||
import org.lwjgl.LWJGLException;
|
|
||||||
import org.lwjgl.BufferUtils;
|
|
||||||
|
|
||||||
abstract class WindowsDirectInputDevice {
|
|
||||||
public final static int DISCL_EXCLUSIVE = 0x00000001;
|
|
||||||
public final static int DISCL_NONEXCLUSIVE = 0x00000002;
|
|
||||||
public final static int DISCL_FOREGROUND = 0x00000004;
|
|
||||||
public final static int DISCL_BACKGROUND = 0x00000008;
|
|
||||||
public final static int DISCL_NOWINKEY = 0x00000010;
|
|
||||||
|
|
||||||
public final static int GUID_XAxis = 1;
|
|
||||||
public final static int GUID_YAxis = 2;
|
|
||||||
public final static int GUID_ZAxis = 3;
|
|
||||||
public final static int GUID_Button = 4;
|
|
||||||
public final static int GUID_Unknown = 5;
|
|
||||||
|
|
||||||
public final static int DATA_SIZE = 3;
|
|
||||||
|
|
||||||
private final long di_device;
|
|
||||||
private ByteBuffer event_buffer;
|
|
||||||
|
|
||||||
public WindowsDirectInputDevice(long di_device) {
|
|
||||||
this.di_device = di_device;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void release() {
|
|
||||||
release(di_device);
|
|
||||||
}
|
|
||||||
protected abstract void release(long di_device);
|
|
||||||
|
|
||||||
public int poll() {
|
|
||||||
return poll(di_device);
|
|
||||||
}
|
|
||||||
protected abstract int poll(long di_device);
|
|
||||||
|
|
||||||
public void setDataFormat(int type) throws LWJGLException {
|
|
||||||
int ret = setDataFormat(di_device, type);
|
|
||||||
if (ret != WindowsDirectInput.DI_OK)
|
|
||||||
throw new LWJGLException("Failed to set data format (" + Integer.toHexString(ret) + ")");
|
|
||||||
}
|
|
||||||
protected abstract int setDataFormat(long di_device, int type);
|
|
||||||
|
|
||||||
public void setCooperateLevel(long hwnd, int flags) throws LWJGLException {
|
|
||||||
int ret = setCooperativeLevel(di_device, hwnd, flags);
|
|
||||||
if (ret != WindowsDirectInput.DI_OK)
|
|
||||||
throw new LWJGLException("Failed to set cooperative level (" + Integer.toHexString(ret) + ")");
|
|
||||||
}
|
|
||||||
protected abstract int setCooperativeLevel(long di_device, long hwnd, int flags);
|
|
||||||
|
|
||||||
public int acquire() {
|
|
||||||
return acquire(di_device);
|
|
||||||
}
|
|
||||||
protected abstract int acquire(long di_device);
|
|
||||||
|
|
||||||
public void setBufferSize(int buffer_size) throws LWJGLException {
|
|
||||||
int ret = setBufferSize(di_device, buffer_size);
|
|
||||||
if (ret != WindowsDirectInput.DI_OK && ret != WindowsDirectInput.DI_PROPNOEFFECT && ret != WindowsDirectInput.DI_POLLEDDEVICE)
|
|
||||||
throw new LWJGLException("Failed to set buffer size (" + Integer.toHexString(ret) + ")");
|
|
||||||
int event_buffer_size = getEventSize()*buffer_size;
|
|
||||||
event_buffer = BufferUtils.createByteBuffer(event_buffer_size);
|
|
||||||
}
|
|
||||||
protected abstract int setBufferSize(long di_device, int buffer_size);
|
|
||||||
|
|
||||||
public int getDeviceData(IntBuffer buffer) {
|
|
||||||
int events_remaining = buffer.remaining()/DATA_SIZE;
|
|
||||||
if (event_buffer == null || events_remaining > event_buffer.remaining()/getEventSize())
|
|
||||||
event_buffer = BufferUtils.createByteBuffer(events_remaining*getEventSize());
|
|
||||||
return getDeviceData(di_device, event_buffer, event_buffer.capacity(), buffer, buffer.position(), buffer.remaining());
|
|
||||||
}
|
|
||||||
protected abstract int getDeviceData(long di_device, ByteBuffer event_buffer, int event_buffer_size, IntBuffer buffer, int position, int size);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Device data is returned in tuples of the form <dwOfs, dwData>.
|
|
||||||
* buffer position() is moved accordingly to number of events.
|
|
||||||
*/
|
|
||||||
public int getDeviceState(ByteBuffer buffer) {
|
|
||||||
return getDeviceState(di_device, buffer, buffer.position(), buffer.remaining());
|
|
||||||
}
|
|
||||||
protected abstract int getDeviceState(long di_device, ByteBuffer buffer, int position, int size);
|
|
||||||
|
|
||||||
public void unacquire() {
|
|
||||||
unacquire(di_device);
|
|
||||||
}
|
|
||||||
protected abstract int unacquire(long di_device);
|
|
||||||
|
|
||||||
public int enumObjects(WindowsDirectInputDeviceObjectCallback enumerator) {
|
|
||||||
return enumObjects(di_device, enumerator);
|
|
||||||
}
|
|
||||||
protected abstract int enumObjects(long di_device, WindowsDirectInputDeviceObjectCallback enumerator);
|
|
||||||
|
|
||||||
protected abstract int getEventSize();
|
|
||||||
}
|
|
|
@ -1,78 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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.
|
|
||||||
*/
|
|
||||||
package org.lwjgl.opengl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the DirectInputDevice3 interface
|
|
||||||
* @author elias_naur
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.nio.IntBuffer;
|
|
||||||
|
|
||||||
final class WindowsDirectInputDevice3 extends WindowsDirectInputDevice {
|
|
||||||
/** Re-declare to get the constants into the native headers */
|
|
||||||
public final static int GUID_XAxis = WindowsDirectInputDevice.GUID_XAxis;
|
|
||||||
public final static int GUID_YAxis = WindowsDirectInputDevice.GUID_YAxis;
|
|
||||||
public final static int GUID_ZAxis = WindowsDirectInputDevice.GUID_ZAxis;
|
|
||||||
public final static int GUID_Button = WindowsDirectInputDevice.GUID_Button;
|
|
||||||
public final static int GUID_Unknown = WindowsDirectInputDevice.GUID_Unknown;
|
|
||||||
|
|
||||||
public final static int DATA_SIZE = WindowsDirectInputDevice.DATA_SIZE;
|
|
||||||
|
|
||||||
public WindowsDirectInputDevice3(long di_device) {
|
|
||||||
super(di_device);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected native int setDataFormat(long di_device, int type);
|
|
||||||
|
|
||||||
protected native int setCooperativeLevel(long di_device, long hwnd, int flags);
|
|
||||||
|
|
||||||
protected native int acquire(long di_device);
|
|
||||||
|
|
||||||
protected native int getDeviceState(long di_device, ByteBuffer buffer, int position, int size);
|
|
||||||
|
|
||||||
protected native int getDeviceData(long di_device, ByteBuffer event_buffer, int event_buffer_size, IntBuffer buffer, int position, int size);
|
|
||||||
|
|
||||||
protected native int unacquire(long di_device);
|
|
||||||
|
|
||||||
protected int poll(long di_device) {
|
|
||||||
return WindowsDirectInput.DI_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected native int setBufferSize(long di_device, int buffer_size);
|
|
||||||
protected native int getEventSize();
|
|
||||||
|
|
||||||
protected native void release(long di_device);
|
|
||||||
|
|
||||||
protected native int enumObjects(long di_device, WindowsDirectInputDeviceObjectCallback enumerator);
|
|
||||||
}
|
|
|
@ -1,76 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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.
|
|
||||||
*/
|
|
||||||
package org.lwjgl.opengl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the DirectInputDevice3 interface
|
|
||||||
* @author elias_naur
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.nio.IntBuffer;
|
|
||||||
|
|
||||||
final class WindowsDirectInputDevice8 extends WindowsDirectInputDevice {
|
|
||||||
/** Re-declare to get the constants into the native headers */
|
|
||||||
public final static int GUID_XAxis = WindowsDirectInputDevice.GUID_XAxis;
|
|
||||||
public final static int GUID_YAxis = WindowsDirectInputDevice.GUID_YAxis;
|
|
||||||
public final static int GUID_ZAxis = WindowsDirectInputDevice.GUID_ZAxis;
|
|
||||||
public final static int GUID_Button = WindowsDirectInputDevice.GUID_Button;
|
|
||||||
public final static int GUID_Unknown = WindowsDirectInputDevice.GUID_Unknown;
|
|
||||||
|
|
||||||
public final static int DATA_SIZE = WindowsDirectInputDevice.DATA_SIZE;
|
|
||||||
|
|
||||||
public WindowsDirectInputDevice8(long di_device) {
|
|
||||||
super(di_device);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected native int setDataFormat(long di_device, int type);
|
|
||||||
|
|
||||||
protected native int setCooperativeLevel(long di_device, long hwnd, int flags);
|
|
||||||
|
|
||||||
protected native int acquire(long di_device);
|
|
||||||
|
|
||||||
protected native int getDeviceState(long di_device, ByteBuffer buffer, int position, int size);
|
|
||||||
|
|
||||||
protected native int getDeviceData(long di_device, ByteBuffer event_buffer, int event_buffer_size, IntBuffer buffer, int position, int size);
|
|
||||||
|
|
||||||
protected native int unacquire(long di_device);
|
|
||||||
|
|
||||||
protected native int poll(long di_device);
|
|
||||||
|
|
||||||
protected native int setBufferSize(long di_device, int buffer_size);
|
|
||||||
protected native int getEventSize();
|
|
||||||
|
|
||||||
protected native void release(long di_device);
|
|
||||||
|
|
||||||
protected native int enumObjects(long di_device, WindowsDirectInputDeviceObjectCallback enumerator);
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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.
|
|
||||||
*/
|
|
||||||
package org.lwjgl.opengl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the DirectInputDevice callback interface
|
|
||||||
* @author elias_naur
|
|
||||||
*/
|
|
||||||
|
|
||||||
interface WindowsDirectInputDeviceObjectCallback {
|
|
||||||
public boolean nextObject(int type, String name);
|
|
||||||
}
|
|
|
@ -1,352 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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.
|
|
||||||
*/
|
|
||||||
package org.lwjgl.opengl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the Windows implementation of the Mouse.
|
|
||||||
* @author elias_naur
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.nio.IntBuffer;
|
|
||||||
|
|
||||||
import org.lwjgl.BufferUtils;
|
|
||||||
import org.lwjgl.LWJGLException;
|
|
||||||
import org.lwjgl.LWJGLUtil;
|
|
||||||
import org.lwjgl.input.Mouse;
|
|
||||||
|
|
||||||
final class WindowsDirectInputMouse {
|
|
||||||
private final static int BUFFER_SIZE = 50;
|
|
||||||
private final static int BUTTON_STATES_SIZE = 7;
|
|
||||||
|
|
||||||
private final static int DIMOFS_X = 0;
|
|
||||||
private final static int DIMOFS_Y = 4;
|
|
||||||
private final static int DIMOFS_Z = 8;
|
|
||||||
private final static int DIMOFS_BUTTON0 = 12;
|
|
||||||
private final static int DIMOFS_BUTTON1 = 13;
|
|
||||||
private final static int DIMOFS_BUTTON2 = 14;
|
|
||||||
private final static int DIMOFS_BUTTON3 = 15;
|
|
||||||
|
|
||||||
private final long hwnd;
|
|
||||||
private final WindowsDirectInput dinput;
|
|
||||||
private final WindowsDirectInputDevice mouse;
|
|
||||||
|
|
||||||
private final int mouse_button_count;
|
|
||||||
private final boolean has_wheel;
|
|
||||||
|
|
||||||
private final EventQueue event_queue = new EventQueue(Mouse.EVENT_SIZE);
|
|
||||||
/* Buffer to hold a DIMOUSESTATE */
|
|
||||||
private final ByteBuffer mouse_state;
|
|
||||||
private final IntBuffer temp_data_buffer;
|
|
||||||
|
|
||||||
private final ByteBuffer mouse_event = ByteBuffer.allocate(Mouse.EVENT_SIZE);
|
|
||||||
|
|
||||||
private boolean mouse_grabbed;
|
|
||||||
private byte[] win32_message_button_states = new byte[BUTTON_STATES_SIZE];
|
|
||||||
private int accum_dwheel;
|
|
||||||
private int last_x;
|
|
||||||
private int last_y;
|
|
||||||
|
|
||||||
public WindowsDirectInputMouse(WindowsDirectInput dinput, long hwnd) throws LWJGLException {
|
|
||||||
this.hwnd = hwnd;
|
|
||||||
this.dinput = dinput;
|
|
||||||
try {
|
|
||||||
mouse = dinput.createDevice(WindowsDirectInput.MOUSE_TYPE);
|
|
||||||
try {
|
|
||||||
mouse.setDataFormat(WindowsDirectInput.MOUSE_TYPE);
|
|
||||||
mouse.setBufferSize(BUFFER_SIZE);
|
|
||||||
if (!acquireNonExclusive())
|
|
||||||
throw new LWJGLException("Failed to acquire mouse non-exclusive");
|
|
||||||
} catch (LWJGLException e) {
|
|
||||||
mouse.release();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
} catch (LWJGLException e) {
|
|
||||||
dinput.release();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
MouseEnumerator enumerator = new MouseEnumerator();
|
|
||||||
mouse.enumObjects(enumerator);
|
|
||||||
this.mouse_button_count = Math.min(enumerator.getButtonCount(), 4);
|
|
||||||
this.has_wheel = enumerator.hasWheel();
|
|
||||||
mouse_state = BufferUtils.createByteBuffer(3*4 + 4);
|
|
||||||
temp_data_buffer = BufferUtils.createIntBuffer(BUFFER_SIZE*WindowsDirectInputDevice.DATA_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasWheel() {
|
|
||||||
return has_wheel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getButtonCount() {
|
|
||||||
return mouse_button_count;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean acquire(int flags) {
|
|
||||||
try {
|
|
||||||
mouse.setCooperateLevel(hwnd, flags);
|
|
||||||
mouse.acquire();
|
|
||||||
return true;
|
|
||||||
} catch (LWJGLException e) {
|
|
||||||
LWJGLUtil.log("Failed to acquire mouse: " + e);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean acquireNonExclusive() {
|
|
||||||
return acquire(WindowsDirectInputDevice.DISCL_NONEXCLUSIVE | WindowsDirectInputDevice.DISCL_FOREGROUND) ||
|
|
||||||
acquire(WindowsDirectInputDevice.DISCL_NONEXCLUSIVE | WindowsDirectInputDevice.DISCL_BACKGROUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void destroy() {
|
|
||||||
mouse.unacquire();
|
|
||||||
mouse.release();
|
|
||||||
dinput.release();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void poll(IntBuffer coord_buffer, ByteBuffer buttons) {
|
|
||||||
int ret = mouse.acquire();
|
|
||||||
if (ret != WindowsDirectInput.DI_OK && ret != WindowsDirectInput.DI_NOEFFECT)
|
|
||||||
return;
|
|
||||||
mouse.poll();
|
|
||||||
for (int i = 0; i < coord_buffer.remaining(); i++)
|
|
||||||
coord_buffer.put(coord_buffer.position() + i, 0);
|
|
||||||
mouse_state.clear();
|
|
||||||
ret = mouse.getDeviceState(mouse_state);
|
|
||||||
int mouse_state_lx = mouse_state.getInt();
|
|
||||||
int mouse_state_ly = mouse_state.getInt();
|
|
||||||
int mouse_state_lz = mouse_state.getInt();
|
|
||||||
int num_buttons = mouse_button_count;
|
|
||||||
if (mouse_grabbed || ret == WindowsDirectInput.DI_OK) {
|
|
||||||
if (ret != WindowsDirectInput.DI_OK) {
|
|
||||||
LWJGLUtil.log("Error getting mouse state: (0x" + Integer.toHexString(ret) + ")");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
coord_buffer.put(coord_buffer.position() + 2, mouse_state_lz);
|
|
||||||
if (num_buttons > buttons.remaining())
|
|
||||||
num_buttons = buttons.remaining();
|
|
||||||
for (int j = 0; j < num_buttons; j++) {
|
|
||||||
byte button_state = (mouse_state.get() & 0x80) != 0 ? (byte)1 : (byte)0;
|
|
||||||
buttons.put(buttons.position() + j, button_state);
|
|
||||||
// track the button state in the windows message buffer state array
|
|
||||||
// to get accurate button information when releasing a grab
|
|
||||||
win32_message_button_states[j] = button_state;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
coord_buffer.put(coord_buffer.position() + 2, accum_dwheel);
|
|
||||||
if (num_buttons > win32_message_button_states.length)
|
|
||||||
num_buttons = win32_message_button_states.length;
|
|
||||||
for (int j = 0; j < num_buttons; j++) {
|
|
||||||
buttons.put(buttons.position() + j, win32_message_button_states[j]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
accum_dwheel = 0;
|
|
||||||
if (mouse_grabbed) {
|
|
||||||
coord_buffer.put(coord_buffer.position() + 0, mouse_state_lx);
|
|
||||||
coord_buffer.put(coord_buffer.position() + 1, -mouse_state_ly);
|
|
||||||
} else {
|
|
||||||
coord_buffer.put(coord_buffer.position() + 0, last_x);
|
|
||||||
coord_buffer.put(coord_buffer.position() + 1, last_y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void putMouseEventWithCoords(byte button, byte state, int coord1, int coord2, int dz, long nanos) {
|
|
||||||
mouse_event.clear();
|
|
||||||
mouse_event.put(button).put(state).putInt(coord1).putInt(coord2).putInt(dz).putLong(nanos);
|
|
||||||
mouse_event.flip();
|
|
||||||
event_queue.putEvent(mouse_event);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void putMouseEvent(byte button, byte state, int dz, long nanos) {
|
|
||||||
if (mouse_grabbed)
|
|
||||||
putMouseEventWithCoords(button, state, 0, 0, dz, nanos);
|
|
||||||
else
|
|
||||||
putMouseEventWithCoords(button, state, last_x, last_y, dz, nanos);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void copyDXEvents(IntBuffer buffer) {
|
|
||||||
int buffer_index = 0;
|
|
||||||
int dx = 0, dy = 0, dwheel = 0;
|
|
||||||
byte button_state;
|
|
||||||
int i;
|
|
||||||
long nanos = 0;
|
|
||||||
while (buffer.hasRemaining()) {
|
|
||||||
int dwOfs = buffer.get();
|
|
||||||
int dwData = buffer.get();
|
|
||||||
long dwTimeStamp = ((long)buffer.get()) & 0xFFFFFFFF;
|
|
||||||
nanos = dwTimeStamp*1000000;
|
|
||||||
button_state = (dwData & 0x80) != 0 ? (byte)1 : (byte)0;
|
|
||||||
switch (dwOfs) {
|
|
||||||
case DIMOFS_BUTTON0:
|
|
||||||
putMouseEventWithCoords((byte)0, button_state, dx, -dy, dwheel, nanos);
|
|
||||||
dx = dy = dwheel = 0;
|
|
||||||
break;
|
|
||||||
case DIMOFS_BUTTON1:
|
|
||||||
putMouseEventWithCoords((byte)1, button_state, dx, -dy, dwheel, nanos);
|
|
||||||
dx = dy = dwheel = 0;
|
|
||||||
break;
|
|
||||||
case DIMOFS_BUTTON2:
|
|
||||||
putMouseEventWithCoords((byte)2, button_state, dx, -dy, dwheel, nanos);
|
|
||||||
dx = dy = dwheel = 0;
|
|
||||||
break;
|
|
||||||
case DIMOFS_BUTTON3:
|
|
||||||
putMouseEventWithCoords((byte)3, button_state, dx, -dy, dwheel, nanos);
|
|
||||||
dx = dy = dwheel = 0;
|
|
||||||
break;
|
|
||||||
case DIMOFS_X:
|
|
||||||
dx += dwData;
|
|
||||||
break;
|
|
||||||
case DIMOFS_Y:
|
|
||||||
dy += dwData;
|
|
||||||
break;
|
|
||||||
case DIMOFS_Z:
|
|
||||||
dwheel += dwData;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (dx != 0 || dy != 0 || dwheel != 0)
|
|
||||||
putMouseEventWithCoords((byte)-1, (byte)0, dx, -dy, dwheel, nanos);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void readDXBuffer() {
|
|
||||||
int ret = mouse.acquire();
|
|
||||||
if (ret != WindowsDirectInput.DI_OK && ret != WindowsDirectInput.DI_NOEFFECT)
|
|
||||||
return;
|
|
||||||
mouse.poll();
|
|
||||||
temp_data_buffer.clear();
|
|
||||||
ret = mouse.getDeviceData(temp_data_buffer);
|
|
||||||
|
|
||||||
switch (ret) {
|
|
||||||
case WindowsDirectInput.DI_OK:
|
|
||||||
break;
|
|
||||||
case WindowsDirectInput.DI_BUFFEROVERFLOW:
|
|
||||||
LWJGLUtil.log("Mouse buffer overflowed");
|
|
||||||
break;
|
|
||||||
case WindowsDirectInput.DIERR_INPUTLOST:
|
|
||||||
LWJGLUtil.log("Mouse input lost");
|
|
||||||
break;
|
|
||||||
case WindowsDirectInput.DIERR_NOTACQUIRED:
|
|
||||||
LWJGLUtil.log("Mouse not acquired");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
LWJGLUtil.log("unknown mouse error (" + Integer.toHexString(ret) + ")");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public final void flush() {
|
|
||||||
readDXBuffer();
|
|
||||||
temp_data_buffer.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void read(ByteBuffer buffer) {
|
|
||||||
readDXBuffer();
|
|
||||||
if (mouse_grabbed) {
|
|
||||||
temp_data_buffer.flip();
|
|
||||||
copyDXEvents(temp_data_buffer);
|
|
||||||
}
|
|
||||||
event_queue.copyEvents(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void grab(boolean grab) {
|
|
||||||
if(grab) {
|
|
||||||
if (!mouse_grabbed) {
|
|
||||||
flush();
|
|
||||||
mouse_grabbed = true;
|
|
||||||
mouse.unacquire();
|
|
||||||
if (!acquire(WindowsDirectInputDevice.DISCL_EXCLUSIVE | WindowsDirectInputDevice.DISCL_FOREGROUND))
|
|
||||||
LWJGLUtil.log("Failed to reset cooperative mode");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (mouse_grabbed) {
|
|
||||||
mouse_grabbed = false;
|
|
||||||
mouse.unacquire();
|
|
||||||
acquireNonExclusive();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
event_queue.clearEvents();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handleMouseScrolled(int event_dwheel, long millis) {
|
|
||||||
accum_dwheel += event_dwheel;
|
|
||||||
putMouseEvent((byte)-1, (byte)0, event_dwheel, millis*1000000);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handleMouseMoved(int x, int y, long millis) {
|
|
||||||
int dx;
|
|
||||||
int dy;
|
|
||||||
dx = x - last_x;
|
|
||||||
dy = y - last_y;
|
|
||||||
last_x = x;
|
|
||||||
last_y = y;
|
|
||||||
long nanos = millis*1000000;
|
|
||||||
if (mouse_grabbed) {
|
|
||||||
putMouseEventWithCoords((byte)-1, (byte)0, dx, dy, 0, nanos);
|
|
||||||
} else {
|
|
||||||
putMouseEventWithCoords((byte)-1, (byte)0, x, y, 0, nanos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handleMouseButton(byte button, byte state, long millis) {
|
|
||||||
putMouseEvent(button, state, 0, millis*1000000);
|
|
||||||
if (button < BUTTON_STATES_SIZE)
|
|
||||||
win32_message_button_states[button] = state != 0 ? (byte)1 : (byte)0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class MouseEnumerator implements WindowsDirectInputDeviceObjectCallback {
|
|
||||||
private int button_count;
|
|
||||||
private boolean has_wheel;
|
|
||||||
|
|
||||||
public int getButtonCount() {
|
|
||||||
return button_count;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasWheel() {
|
|
||||||
return has_wheel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean nextObject(int type, String name) {
|
|
||||||
LWJGLUtil.log("Found mouse object: " + name);
|
|
||||||
switch (type) {
|
|
||||||
case WindowsDirectInputDevice.GUID_ZAxis:
|
|
||||||
has_wheel = true;
|
|
||||||
break;
|
|
||||||
case WindowsDirectInputDevice.GUID_Button:
|
|
||||||
button_count++;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -205,15 +205,6 @@ final class WindowsDisplay implements DisplayImplementation {
|
||||||
rect.offset(offset_x, offset_y);
|
rect.offset(offset_x, offset_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
static WindowsDirectInput createDirectInput() throws LWJGLException {
|
|
||||||
try {
|
|
||||||
return new WindowsDirectInput8(getDllInstance());
|
|
||||||
} catch (LWJGLException e) {
|
|
||||||
LWJGLUtil.log("Failed to create DirectInput 8 interface, falling back to DirectInput 3");
|
|
||||||
return new WindowsDirectInput3(getDllInstance());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void setupCursorClipping(long hwnd) throws LWJGLException {
|
static void setupCursorClipping(long hwnd) throws LWJGLException {
|
||||||
cursor_clipped = true;
|
cursor_clipped = true;
|
||||||
getGlobalClientRect(hwnd, rect);
|
getGlobalClientRect(hwnd, rect);
|
||||||
|
|
|
@ -1,88 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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: org_lwjgl_input_Keyboard.c 2385 2006-06-23 16:45:21Z elias_naur $
|
|
||||||
*
|
|
||||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
|
||||||
* @version $Revision: 2385 $
|
|
||||||
*/
|
|
||||||
|
|
||||||
#undef DIRECTINPUT_VERSION
|
|
||||||
#define DIRECTINPUT_VERSION 0x0300
|
|
||||||
#include "Window.h"
|
|
||||||
#include <dinput.h>
|
|
||||||
#include <jni.h>
|
|
||||||
#include "org_lwjgl_opengl_WindowsDirectInput3.h"
|
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsDirectInput3_createDirectInput(JNIEnv *env, jobject unused, jlong hinst_int) {
|
|
||||||
HINSTANCE hinst = (HINSTANCE)(LONG_PTR)hinst_int;
|
|
||||||
LPDIRECTINPUT lpdi;
|
|
||||||
HRESULT ret;
|
|
||||||
|
|
||||||
ret = DirectInputCreate(hinst, DIRECTINPUT_VERSION, &lpdi, NULL);
|
|
||||||
if (ret != DI_OK) {
|
|
||||||
throwFormattedException(env, "Failed to create DirectInput (%x)", ret);
|
|
||||||
return (LONG_PTR)NULL;
|
|
||||||
}
|
|
||||||
return (LONG_PTR)lpdi;
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsDirectInput3_nCreateDevice(JNIEnv *env, jclass unused, jlong di_interface, jint type) {
|
|
||||||
LPDIRECTINPUT lpdi = (LPDIRECTINPUT)(LONG_PTR)di_interface;
|
|
||||||
LPDIRECTINPUTDEVICE lpdevice;
|
|
||||||
GUID device_guid;
|
|
||||||
HRESULT ret;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case org_lwjgl_opengl_WindowsDirectInput3_KEYBOARD_TYPE:
|
|
||||||
device_guid = GUID_SysKeyboard;
|
|
||||||
break;
|
|
||||||
case org_lwjgl_opengl_WindowsDirectInput3_MOUSE_TYPE:
|
|
||||||
device_guid = GUID_SysMouse;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throwFormattedException(env, "Unknown device type (%d)", type);
|
|
||||||
return (LONG_PTR)NULL;
|
|
||||||
}
|
|
||||||
ret = IDirectInput_CreateDevice(lpdi, &device_guid, &lpdevice, NULL);
|
|
||||||
if (ret != DI_OK) {
|
|
||||||
throwFormattedException(env, "Failed to create keyboard (%x).", ret);
|
|
||||||
return (LONG_PTR)NULL;
|
|
||||||
}
|
|
||||||
return (LONG_PTR)lpdevice;
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDirectInput3_release(JNIEnv *env, jobject unused, jlong di_interface) {
|
|
||||||
LPDIRECTINPUT lpdi = (LPDIRECTINPUT)(LONG_PTR)di_interface;
|
|
||||||
IDirectInput_Release(lpdi);
|
|
||||||
}
|
|
|
@ -1,101 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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: org_lwjgl_input_Keyboard.c 2385 2006-06-23 16:45:21Z elias_naur $
|
|
||||||
*
|
|
||||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
|
||||||
* @version $Revision: 2385 $
|
|
||||||
*/
|
|
||||||
|
|
||||||
#undef DIRECTINPUT_VERSION
|
|
||||||
#define DIRECTINPUT_VERSION 0x0800
|
|
||||||
#include "Window.h"
|
|
||||||
#include <dinput.h>
|
|
||||||
#include <jni.h>
|
|
||||||
#include "org_lwjgl_opengl_WindowsDirectInput8.h"
|
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsDirectInput8_createDirectInput(JNIEnv *env, jobject unused, jlong hinst_int) {
|
|
||||||
HINSTANCE hinst = (HINSTANCE)(LONG_PTR)hinst_int;
|
|
||||||
LPDIRECTINPUT8 lpdi;
|
|
||||||
HRESULT ret;
|
|
||||||
|
|
||||||
ret = CoInitialize(NULL);
|
|
||||||
if (ret != S_OK && ret != S_FALSE) {
|
|
||||||
throwFormattedException(env, "CoInitialize failed (%x)", ret);
|
|
||||||
return (LONG_PTR)NULL;
|
|
||||||
}
|
|
||||||
ret = CoCreateInstance(&CLSID_DirectInput8, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectInput8, (void *)&lpdi);
|
|
||||||
if (ret != DI_OK && ret != DIERR_BETADIRECTINPUTVERSION) {
|
|
||||||
throwFormattedException(env, "Failed to create DirectInput (%x)", ret);
|
|
||||||
return (LONG_PTR)NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = IDirectInput8_Initialize(lpdi, hinst, DIRECTINPUT_VERSION);
|
|
||||||
if (FAILED(ret)) {
|
|
||||||
throwFormattedException(env, "Failed to initialize DirectInput (%x)", ret);
|
|
||||||
IDirectInput8_Release(lpdi);
|
|
||||||
return (LONG_PTR)NULL;
|
|
||||||
}
|
|
||||||
return (LONG_PTR)lpdi;
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsDirectInput8_nCreateDevice(JNIEnv *env, jclass unused, jlong di_interface, jint type) {
|
|
||||||
LPDIRECTINPUT8 lpdi = (LPDIRECTINPUT8)(LONG_PTR)di_interface;
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice;
|
|
||||||
GUID device_guid;
|
|
||||||
HRESULT ret;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case org_lwjgl_opengl_WindowsDirectInput8_KEYBOARD_TYPE:
|
|
||||||
device_guid = GUID_SysKeyboard;
|
|
||||||
break;
|
|
||||||
case org_lwjgl_opengl_WindowsDirectInput8_MOUSE_TYPE:
|
|
||||||
device_guid = GUID_SysMouse;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throwFormattedException(env, "Unknown device type (%d)", type);
|
|
||||||
return (LONG_PTR)NULL;
|
|
||||||
}
|
|
||||||
ret = IDirectInput8_CreateDevice(lpdi, &device_guid, &lpdevice, NULL);
|
|
||||||
if (ret != DI_OK) {
|
|
||||||
throwFormattedException(env, "Failed to create keyboard (%x).", ret);
|
|
||||||
return (LONG_PTR)NULL;
|
|
||||||
}
|
|
||||||
return (LONG_PTR)lpdevice;
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDirectInput8_release(JNIEnv *env, jobject unused, jlong di_interface) {
|
|
||||||
LPDIRECTINPUT8 lpdi = (LPDIRECTINPUT8)(LONG_PTR)di_interface;
|
|
||||||
IDirectInput8_Release(lpdi);
|
|
||||||
CoUninitialize();
|
|
||||||
}
|
|
|
@ -1,160 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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: org_lwjgl_input_Keyboard.c 2385 2006-06-23 16:45:21Z elias_naur $
|
|
||||||
*
|
|
||||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
|
||||||
* @version $Revision: 2385 $
|
|
||||||
*/
|
|
||||||
|
|
||||||
#undef DIRECTINPUT_VERSION
|
|
||||||
#define DIRECTINPUT_VERSION 0x0300
|
|
||||||
#include "Window.h"
|
|
||||||
#include "dinputhelper.h"
|
|
||||||
#include <dinput.h>
|
|
||||||
#include <jni.h>
|
|
||||||
#include "org_lwjgl_opengl_WindowsDirectInput3.h"
|
|
||||||
#include "org_lwjgl_opengl_WindowsDirectInputDevice3.h"
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice3_unacquire(JNIEnv *env, jobject unused, jlong di_device) {
|
|
||||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
|
||||||
return IDirectInputDevice_Unacquire(lpdevice);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice3_setDataFormat(JNIEnv *env, jobject unused, jlong di_device, jint type) {
|
|
||||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
|
||||||
LPCDIDATAFORMAT format;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case org_lwjgl_opengl_WindowsDirectInput3_KEYBOARD_TYPE:
|
|
||||||
format = &c_dfDIKeyboard;
|
|
||||||
break;
|
|
||||||
case org_lwjgl_opengl_WindowsDirectInput3_MOUSE_TYPE:
|
|
||||||
format = &c_dfDIMouse;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throwFormattedException(env, "Unknown device type (%d)", type);
|
|
||||||
return DIERR_INVALIDPARAM;
|
|
||||||
}
|
|
||||||
return IDirectInputDevice_SetDataFormat(lpdevice, format);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice3_getDeviceState(JNIEnv *env, jobject unused, jlong di_device, jobject buffer_obj, jint pos, jint size) {
|
|
||||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
|
||||||
jbyte *buffer = pos + (jbyte *)(*env)->GetDirectBufferAddress(env, buffer_obj);
|
|
||||||
return IDirectInputDevice_GetDeviceState(lpdevice, size, buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice3_getEventSize(JNIEnv *env, jobject unused) {
|
|
||||||
return sizeof(DIDEVICEOBJECTDATA);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice3_getDeviceData(JNIEnv *env, jobject unused, jlong di_device, jobject event_buffer_obj, jint event_buffer_size, jobject buffer_obj, jint buffer_pos, jint buffer_size) {
|
|
||||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
|
||||||
jint *buffer = buffer_pos + (jint *)(*env)->GetDirectBufferAddress(env, buffer_obj);
|
|
||||||
DIDEVICEOBJECTDATA *event_buffer = (*env)->GetDirectBufferAddress(env, event_buffer_obj);
|
|
||||||
DIDEVICEOBJECTDATA *current_event;
|
|
||||||
DWORD num_events = event_buffer_size/sizeof(DIDEVICEOBJECTDATA);
|
|
||||||
HRESULT ret = IDirectInputDevice_GetDeviceData(lpdevice, sizeof(DIDEVICEOBJECTDATA), event_buffer, &num_events, 0);
|
|
||||||
jint num_buffer_events = buffer_size/org_lwjgl_opengl_WindowsDirectInputDevice3_DATA_SIZE;
|
|
||||||
jint i;
|
|
||||||
if (ret != DI_OK && ret != DI_BUFFEROVERFLOW)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
if (num_buffer_events < num_events) {
|
|
||||||
num_events = num_buffer_events;
|
|
||||||
ret = DI_BUFFEROVERFLOW;
|
|
||||||
}
|
|
||||||
for (i = 0; i < num_events; i++) {
|
|
||||||
current_event = event_buffer + i;
|
|
||||||
buffer[buffer_pos++] = current_event->dwOfs;
|
|
||||||
buffer[buffer_pos++] = current_event->dwData;
|
|
||||||
buffer[buffer_pos++] = current_event->dwTimeStamp;
|
|
||||||
}
|
|
||||||
positionBuffer(env, buffer_obj, buffer_pos);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice3_acquire(JNIEnv *env, jobject unused, jlong di_device) {
|
|
||||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
|
||||||
return IDirectInputDevice_Acquire(lpdevice);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice3_setBufferSize(JNIEnv *env, jobject unused, jlong di_device, jint buffer_size) {
|
|
||||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
|
||||||
DIPROPDWORD dipropdw;
|
|
||||||
dipropdw.diph.dwSize = sizeof(DIPROPDWORD);
|
|
||||||
dipropdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
|
||||||
dipropdw.diph.dwObj = 0;
|
|
||||||
dipropdw.diph.dwHow = DIPH_DEVICE;
|
|
||||||
dipropdw.dwData = buffer_size;
|
|
||||||
return IDirectInputDevice_SetProperty(lpdevice, DIPROP_BUFFERSIZE, &dipropdw.diph);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice3_setCooperativeLevel(JNIEnv *env, jobject unused, jlong di_device, jlong hwnd_int, jint flags) {
|
|
||||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
|
||||||
HWND hwnd = (HWND)(LONG_PTR)hwnd_int;
|
|
||||||
return IDirectInputDevice_SetCooperativeLevel(lpdevice, hwnd, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice3_release(JNIEnv *env, jobject unused, jlong di_device) {
|
|
||||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
|
||||||
IDirectInputDevice_Release(lpdevice);
|
|
||||||
}
|
|
||||||
|
|
||||||
static BOOL CALLBACK EnumMouseObjectsCallback(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef) {
|
|
||||||
enum_context_t *enum_context = (enum_context_t *)pvRef;
|
|
||||||
jint object_type;
|
|
||||||
|
|
||||||
if (IsEqualGUID(&lpddoi->guidType, &GUID_Button)) {
|
|
||||||
object_type = org_lwjgl_opengl_WindowsDirectInputDevice3_GUID_Button;
|
|
||||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_XAxis)) {
|
|
||||||
object_type = org_lwjgl_opengl_WindowsDirectInputDevice3_GUID_XAxis;
|
|
||||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_YAxis)) {
|
|
||||||
object_type = org_lwjgl_opengl_WindowsDirectInputDevice3_GUID_YAxis;
|
|
||||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_ZAxis)) {
|
|
||||||
object_type = org_lwjgl_opengl_WindowsDirectInputDevice3_GUID_ZAxis;
|
|
||||||
} else {
|
|
||||||
object_type = org_lwjgl_opengl_WindowsDirectInputDevice3_GUID_Unknown;
|
|
||||||
}
|
|
||||||
|
|
||||||
return objectCallback(enum_context->env, enum_context->enumerator, object_type, lpddoi->tszName) ? DIENUM_CONTINUE : DIENUM_STOP;
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice3_enumObjects(JNIEnv *env, jobject unused, jlong di_device, jobject enumerator) {
|
|
||||||
LPDIRECTINPUTDEVICE lpdevice = (LPDIRECTINPUTDEVICE)(LONG_PTR)di_device;
|
|
||||||
enum_context_t enum_context;
|
|
||||||
enum_context.env = env;
|
|
||||||
enum_context.enumerator = enumerator;
|
|
||||||
return IDirectInputDevice_EnumObjects(lpdevice, EnumMouseObjectsCallback, &enum_context, DIDFT_ALL);
|
|
||||||
}
|
|
|
@ -1,165 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2002-2008 LWJGL 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 'LWJGL' 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: org_lwjgl_input_Keyboard.c 2385 2006-06-23 16:45:21Z elias_naur $
|
|
||||||
*
|
|
||||||
* @author elias_naur <elias_naur@users.sourceforge.net>
|
|
||||||
* @version $Revision: 2385 $
|
|
||||||
*/
|
|
||||||
|
|
||||||
#undef DIRECTINPUT_VERSION
|
|
||||||
#define DIRECTINPUT_VERSION 0x0800
|
|
||||||
#include "Window.h"
|
|
||||||
#include "dinputhelper.h"
|
|
||||||
#include <dinput.h>
|
|
||||||
#include <jni.h>
|
|
||||||
#include "org_lwjgl_opengl_WindowsDirectInput8.h"
|
|
||||||
#include "org_lwjgl_opengl_WindowsDirectInputDevice8.h"
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_unacquire(JNIEnv *env, jobject unused, jlong di_device) {
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
|
||||||
return IDirectInputDevice8_Unacquire(lpdevice);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_poll(JNIEnv *env, jobject unused, jlong di_device) {
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
|
||||||
return IDirectInputDevice8_Poll(lpdevice);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_setDataFormat(JNIEnv *env, jobject unused, jlong di_device, jint type) {
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
|
||||||
LPCDIDATAFORMAT format;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case org_lwjgl_opengl_WindowsDirectInput8_KEYBOARD_TYPE:
|
|
||||||
format = &c_dfDIKeyboard;
|
|
||||||
break;
|
|
||||||
case org_lwjgl_opengl_WindowsDirectInput8_MOUSE_TYPE:
|
|
||||||
format = &c_dfDIMouse;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throwFormattedException(env, "Unknown device type (%d)", type);
|
|
||||||
return DIERR_INVALIDPARAM;
|
|
||||||
}
|
|
||||||
return IDirectInputDevice8_SetDataFormat(lpdevice, format);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_getDeviceState(JNIEnv *env, jobject unused, jlong di_device, jobject buffer_obj, jint pos, jint size) {
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
|
||||||
jbyte *buffer = pos + (jbyte *)(*env)->GetDirectBufferAddress(env, buffer_obj);
|
|
||||||
return IDirectInputDevice8_GetDeviceState(lpdevice, size, buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_getEventSize(JNIEnv *env, jobject unused) {
|
|
||||||
return sizeof(DIDEVICEOBJECTDATA);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_getDeviceData(JNIEnv *env, jobject unused, jlong di_device, jobject event_buffer_obj, jint event_buffer_size, jobject buffer_obj, jint buffer_pos, jint buffer_size) {
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
|
||||||
jint *buffer = buffer_pos + (jint *)(*env)->GetDirectBufferAddress(env, buffer_obj);
|
|
||||||
DIDEVICEOBJECTDATA *event_buffer = (*env)->GetDirectBufferAddress(env, event_buffer_obj);
|
|
||||||
DIDEVICEOBJECTDATA *current_event;
|
|
||||||
DWORD num_events = event_buffer_size/sizeof(DIDEVICEOBJECTDATA);
|
|
||||||
HRESULT ret = IDirectInputDevice8_GetDeviceData(lpdevice, sizeof(DIDEVICEOBJECTDATA), event_buffer, &num_events, 0);
|
|
||||||
jint num_buffer_events = buffer_size/org_lwjgl_opengl_WindowsDirectInputDevice8_DATA_SIZE;
|
|
||||||
jint i;
|
|
||||||
if (ret != DI_OK && ret != DI_BUFFEROVERFLOW)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
if (num_buffer_events < num_events) {
|
|
||||||
num_events = num_buffer_events;
|
|
||||||
ret = DI_BUFFEROVERFLOW;
|
|
||||||
}
|
|
||||||
for (i = 0; i < num_events; i++) {
|
|
||||||
current_event = event_buffer + i;
|
|
||||||
buffer[buffer_pos++] = current_event->dwOfs;
|
|
||||||
buffer[buffer_pos++] = current_event->dwData;
|
|
||||||
buffer[buffer_pos++] = current_event->dwTimeStamp;
|
|
||||||
}
|
|
||||||
positionBuffer(env, buffer_obj, buffer_pos);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_acquire(JNIEnv *env, jobject unused, jlong di_device) {
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
|
||||||
return IDirectInputDevice8_Acquire(lpdevice);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_setBufferSize(JNIEnv *env, jobject unused, jlong di_device, jint buffer_size) {
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
|
||||||
DIPROPDWORD dipropdw;
|
|
||||||
dipropdw.diph.dwSize = sizeof(DIPROPDWORD);
|
|
||||||
dipropdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
|
||||||
dipropdw.diph.dwObj = 0;
|
|
||||||
dipropdw.diph.dwHow = DIPH_DEVICE;
|
|
||||||
dipropdw.dwData = buffer_size;
|
|
||||||
return IDirectInputDevice8_SetProperty(lpdevice, DIPROP_BUFFERSIZE, &dipropdw.diph);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_setCooperativeLevel(JNIEnv *env, jobject unused, jlong di_device, jlong hwnd_int, jint flags) {
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
|
||||||
HWND hwnd = (HWND)(LONG_PTR)hwnd_int;
|
|
||||||
return IDirectInputDevice8_SetCooperativeLevel(lpdevice, hwnd, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_release(JNIEnv *env, jobject unused, jlong di_device) {
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
|
||||||
IDirectInputDevice8_Release(lpdevice);
|
|
||||||
}
|
|
||||||
|
|
||||||
static BOOL CALLBACK EnumMouseObjectsCallback(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef) {
|
|
||||||
enum_context_t *enum_context = (enum_context_t *)pvRef;
|
|
||||||
jint object_type;
|
|
||||||
|
|
||||||
if (IsEqualGUID(&lpddoi->guidType, &GUID_Button)) {
|
|
||||||
object_type = org_lwjgl_opengl_WindowsDirectInputDevice8_GUID_Button;
|
|
||||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_XAxis)) {
|
|
||||||
object_type = org_lwjgl_opengl_WindowsDirectInputDevice8_GUID_XAxis;
|
|
||||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_YAxis)) {
|
|
||||||
object_type = org_lwjgl_opengl_WindowsDirectInputDevice8_GUID_YAxis;
|
|
||||||
} else if(IsEqualGUID(&lpddoi->guidType, &GUID_ZAxis)) {
|
|
||||||
object_type = org_lwjgl_opengl_WindowsDirectInputDevice8_GUID_ZAxis;
|
|
||||||
} else {
|
|
||||||
object_type = org_lwjgl_opengl_WindowsDirectInputDevice8_GUID_Unknown;
|
|
||||||
}
|
|
||||||
|
|
||||||
return objectCallback(enum_context->env, enum_context->enumerator, object_type, lpddoi->tszName) ? DIENUM_CONTINUE : DIENUM_STOP;
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDirectInputDevice8_enumObjects(JNIEnv *env, jobject unused, jlong di_device, jobject enumerator) {
|
|
||||||
LPDIRECTINPUTDEVICE8 lpdevice = (LPDIRECTINPUTDEVICE8)(LONG_PTR)di_device;
|
|
||||||
enum_context_t enum_context;
|
|
||||||
enum_context.env = env;
|
|
||||||
enum_context.enumerator = enumerator;
|
|
||||||
return IDirectInputDevice8_EnumObjects(lpdevice, EnumMouseObjectsCallback, &enum_context, DIDFT_ALL);
|
|
||||||
}
|
|
Loading…
Reference in New Issue