Fixed compile warnings

This commit is contained in:
Endolf 2018-05-30 19:09:03 +01:00
parent 4ef9e03623
commit 59c21d42c5
3 changed files with 44 additions and 47 deletions

View file

@ -32,19 +32,21 @@
*****************************************************************************/
package net.java.games.input;
import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
/**
* @author elias
* @version 1.0
*/
final class DataQueue {
private final Object[] elements;
final class DataQueue<T> {
private final T[] elements;
private int position;
private int limit;
public DataQueue(int size, Class<?> element_type) {
this.elements= new Object[size];
@SuppressWarnings("unchecked")
public DataQueue(int size, Class<T> element_type) {
this.elements= (T[])Array.newInstance(element_type, size);
for (int i = 0; i < elements.length; i++) {
try {
elements[i] = element_type.getDeclaredConstructor().newInstance();
@ -68,12 +70,12 @@ final class DataQueue {
return limit;
}
public final Object get(int index) {
public final T get(int index) {
assert index < limit;
return elements[index];
}
public final Object get() {
public final T get() {
if (!hasRemaining())
return null;
return get(position++);
@ -91,7 +93,7 @@ final class DataQueue {
}
private final void swap(int index1, int index2) {
Object temp = elements[index1];
T temp = elements[index1];
elements[index1] = elements[index2];
elements[index2] = temp;
}
@ -113,7 +115,7 @@ final class DataQueue {
this.position = position;
}
public final Object[] getElements() {
public final T[] getElements() {
return elements;
}
}

View file

@ -1,10 +1,4 @@
/*
* %W% %E%
*
* Copyright 2002 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
/*****************************************************************************
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@ -201,16 +195,16 @@ final class IDirectInputDevice {
private final int dev_subtype;
private final String instance_name;
private final String product_name;
private final List objects = new ArrayList();
private final List effects = new ArrayList();
private final List rumblers = new ArrayList();
private final List<DIDeviceObject> objects = new ArrayList<>();
private final List<DIEffectInfo> effects = new ArrayList<>();
private final List<Rumbler> rumblers = new ArrayList<>();
private final int[] device_state;
private final Map object_to_component = new HashMap();
private final Map<DIDeviceObject,DIComponent> object_to_component = new HashMap<>();
private final boolean axes_in_relative_mode;
private boolean released;
private DataQueue queue;
private DataQueue<DIDeviceObjectData> queue;
private int button_counter;
private int current_format_offset;
@ -242,7 +236,7 @@ final class IDirectInputDevice {
boolean all_relative = true;
boolean has_axis = false;
for (int i = 0; i < objects.size(); i++) {
DIDeviceObject obj = (DIDeviceObject)objects.get(i);
DIDeviceObject obj = objects.get(i);
if (obj.isAxis()) {
has_axis = true;
if (!obj.isRelative()) {
@ -272,10 +266,10 @@ final class IDirectInputDevice {
}
public final Rumbler[] getRumblers() {
return (Rumbler[])rumblers.toArray(new Rumbler[]{});
return rumblers.toArray(new Rumbler[]{});
}
private final List createRumblers() throws IOException {
private final List<Rumbler> createRumblers() throws IOException {
DIDeviceObject x_axis = lookupObjectByGUID(GUID_XAxis);
// DIDeviceObject y_axis = lookupObjectByGUID(GUID_YAxis);
if(x_axis == null/* || y_axis == null*/)
@ -283,7 +277,7 @@ final class IDirectInputDevice {
DIDeviceObject[] axes = {x_axis/*, y_axis*/};
long[] directions = {0/*, 0*/};
for (int i = 0; i < effects.size(); i++) {
DIEffectInfo info = (DIEffectInfo)effects.get(i);
DIEffectInfo info = effects.get(i);
if ((info.getEffectType() & 0xff) == DIEFT_PERIODIC &&
(info.getDynamicParams() & DIEP_GAIN) != 0) {
rumblers.add(createPeriodicRumbler(axes, directions, info));
@ -304,7 +298,7 @@ final class IDirectInputDevice {
private final DIDeviceObject lookupObjectByGUID(int guid_id) {
for (int i = 0; i < objects.size(); i++) {
DIDeviceObject object = (DIDeviceObject)objects.get(i);
DIDeviceObject object = objects.get(i);
if (guid_id == object.getGUIDType())
return object;
}
@ -321,11 +315,11 @@ final class IDirectInputDevice {
* for the int size (4 bytes)
*/
int format_offset = event.getFormatOffset()/4;
return (DIDeviceObject)objects.get(format_offset);
return objects.get(format_offset);
}
public final DIComponent mapObject(DIDeviceObject object) {
return (DIComponent)object_to_component.get(object);
return object_to_component.get(object);
}
public final void registerComponent(DIDeviceObject object, DIComponent component) {
@ -342,7 +336,7 @@ final class IDirectInputDevice {
}
public synchronized final boolean getNextEvent(DIDeviceObjectData data) {
DIDeviceObjectData next_event = (DIDeviceObjectData)queue.get();
DIDeviceObjectData next_event = queue.get();
if (next_event == null)
return false;
data.set(next_event);
@ -375,7 +369,7 @@ final class IDirectInputDevice {
}
private final static native int nUnacquire(long address);
private final boolean getDeviceData(DataQueue queue) throws IOException {
private final boolean getDeviceData(DataQueue<DIDeviceObjectData> queue) throws IOException {
int res = nGetDeviceData(address, 0, queue, queue.getElements(), queue.position(), queue.remaining());
if (res != DI_OK && res != DI_BUFFEROVERFLOW) {
if (res == DIERR_NOTACQUIRED) {
@ -386,7 +380,7 @@ final class IDirectInputDevice {
}
return true;
}
private final static native int nGetDeviceData(long address, int flags, DataQueue queue, Object[] queue_elements, int position, int remaining);
private final static native int nGetDeviceData(long address, int flags, DataQueue<DIDeviceObjectData> queue, Object[] queue_elements, int position, int remaining);
private final void getDeviceState(int[] device_state) throws IOException {
int res = nGetDeviceState(address, device_state);
@ -420,7 +414,7 @@ final class IDirectInputDevice {
return dev_type;
}
public final List getObjects() {
public final List<DIDeviceObject> getObjects() {
return objects;
}
@ -509,7 +503,7 @@ final class IDirectInputDevice {
int res = nSetBufferSize(address, size);
if (res != DI_OK && res != DI_PROPNOEFFECT && res != DI_POLLEDDEVICE)
throw new IOException("Failed to set buffer size (" + Integer.toHexString(res) + ")");
queue = new DataQueue(size, DIDeviceObjectData.class);
queue = new DataQueue<>(size, DIDeviceObjectData.class);
queue.position(queue.limit());
acquire();
}
@ -540,6 +534,7 @@ final class IDirectInputDevice {
throw new IOException("Device is released");
}
@SuppressWarnings("deprecation")
protected void finalize() {
release();
}

View file

@ -89,12 +89,12 @@ final class RawDevice {
private final int type;
/* Events from the event queue thread end here */
private DataQueue keyboard_events;
private DataQueue mouse_events;
private DataQueue<RawKeyboardEvent> keyboard_events;
private DataQueue<RawMouseEvent> mouse_events;
/* After processing in poll*(), the events are placed here */
private DataQueue processed_keyboard_events;
private DataQueue processed_mouse_events;
private DataQueue<RawKeyboardEvent> processed_keyboard_events;
private DataQueue<RawMouseEvent> processed_mouse_events;
/* mouse state */
private final boolean[] button_states = new boolean[5];
@ -123,7 +123,7 @@ final class RawDevice {
/* Careful, this is called from the event queue thread */
public final synchronized void addMouseEvent(long millis, int flags, int button_flags, int button_data, long raw_buttons, long last_x, long last_y, long extra_information) {
if (mouse_events.hasRemaining()) {
RawMouseEvent event = (RawMouseEvent)mouse_events.get();
RawMouseEvent event = mouse_events.get();
event.set(millis, flags, button_flags, button_data, raw_buttons, last_x, last_y, extra_information);
}
}
@ -131,7 +131,7 @@ final class RawDevice {
/* Careful, this is called from the event queue thread */
public final synchronized void addKeyboardEvent(long millis, int make_code, int flags, int vkey, int message, long extra_information) {
if (keyboard_events.hasRemaining()) {
RawKeyboardEvent event = (RawKeyboardEvent)keyboard_events.get();
RawKeyboardEvent event = keyboard_events.get();
event.set(millis, make_code, flags, vkey, message, extra_information);
}
}
@ -140,10 +140,10 @@ final class RawDevice {
relative_x = relative_y = wheel = 0;
mouse_events.flip();
while (mouse_events.hasRemaining()) {
RawMouseEvent event = (RawMouseEvent)mouse_events.get();
RawMouseEvent event = mouse_events.get();
boolean has_update = processMouseEvent(event);
if (has_update && processed_mouse_events.hasRemaining()) {
RawMouseEvent processed_event = (RawMouseEvent)processed_mouse_events.get();
RawMouseEvent processed_event = processed_mouse_events.get();
processed_event.set(event);
}
}
@ -153,10 +153,10 @@ final class RawDevice {
public final synchronized void pollKeyboard() {
keyboard_events.flip();
while (keyboard_events.hasRemaining()) {
RawKeyboardEvent event = (RawKeyboardEvent)keyboard_events.get();
RawKeyboardEvent event = keyboard_events.get();
boolean has_update = processKeyboardEvent(event);
if (has_update && processed_keyboard_events.hasRemaining()) {
RawKeyboardEvent processed_event = (RawKeyboardEvent)processed_keyboard_events.get();
RawKeyboardEvent processed_event = processed_keyboard_events.get();
processed_event.set(event);
}
}
@ -250,7 +250,7 @@ final class RawDevice {
processed_keyboard_events.compact();
return false;
}
RawKeyboardEvent next_event = (RawKeyboardEvent)processed_keyboard_events.get();
RawKeyboardEvent next_event = processed_keyboard_events.get();
event.set(next_event);
processed_keyboard_events.compact();
return true;
@ -262,7 +262,7 @@ final class RawDevice {
processed_mouse_events.compact();
return false;
}
RawMouseEvent next_event = (RawMouseEvent)processed_mouse_events.get();
RawMouseEvent next_event = processed_mouse_events.get();
if ((next_event.getFlags() & MOUSE_MOVE_ABSOLUTE) != 0) {
event_relative_x = next_event.getLastX() - event_last_x;
event_relative_y = next_event.getLastY() - event_last_y;
@ -284,10 +284,10 @@ final class RawDevice {
}
public final void setBufferSize(int size) {
keyboard_events = new DataQueue(size, RawKeyboardEvent.class);
mouse_events = new DataQueue(size, RawMouseEvent.class);
processed_keyboard_events = new DataQueue(size, RawKeyboardEvent.class);
processed_mouse_events = new DataQueue(size, RawMouseEvent.class);
keyboard_events = new DataQueue<>(size, RawKeyboardEvent.class);
mouse_events = new DataQueue<>(size, RawMouseEvent.class);
processed_keyboard_events = new DataQueue<>(size, RawKeyboardEvent.class);
processed_mouse_events = new DataQueue<>(size, RawMouseEvent.class);
}
public final int getType() {