mirror of
https://github.com/glfw/glfw.git
synced 2024-11-26 03:52:01 +00:00
Cleanup
This commit is contained in:
parent
953106e74d
commit
617c42b20a
@ -110,7 +110,7 @@ static void closeJoystick(_GLFWjoystick* js)
|
|||||||
CFRelease(js->ns.hats);
|
CFRelease(js->ns.hats);
|
||||||
|
|
||||||
_glfwFreeJoystick(js);
|
_glfwFreeJoystick(js);
|
||||||
_glfwInputJoystick(_GLFW_JOYSTICK_ID(js), GLFW_DISCONNECTED);
|
_glfwInputJoystick(js, GLFW_DISCONNECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Callback for user-initiated joystick addition
|
// Callback for user-initiated joystick addition
|
||||||
@ -261,7 +261,7 @@ static void matchCallback(void* context,
|
|||||||
js->ns.buttons = buttons;
|
js->ns.buttons = buttons;
|
||||||
js->ns.hats = hats;
|
js->ns.hats = hats;
|
||||||
|
|
||||||
_glfwInputJoystick(_GLFW_JOYSTICK_ID(js), GLFW_CONNECTED);
|
_glfwInputJoystick(js, GLFW_CONNECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Callback for user-initiated joystick removal
|
// Callback for user-initiated joystick removal
|
||||||
@ -384,10 +384,8 @@ void _glfwTerminateJoysticksNS(void)
|
|||||||
////// GLFW platform API //////
|
////// GLFW platform API //////
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int _glfwPlatformPollJoystick(int jid, int mode)
|
int _glfwPlatformPollJoystick(_GLFWjoystick* js, int mode)
|
||||||
{
|
{
|
||||||
_GLFWjoystick* js = _glfw.joysticks + jid;
|
|
||||||
|
|
||||||
if (mode & _GLFW_POLL_AXES)
|
if (mode & _GLFW_POLL_AXES)
|
||||||
{
|
{
|
||||||
CFIndex i;
|
CFIndex i;
|
||||||
@ -406,11 +404,11 @@ int _glfwPlatformPollJoystick(int jid, int mode)
|
|||||||
|
|
||||||
const long delta = axis->maximum - axis->minimum;
|
const long delta = axis->maximum - axis->minimum;
|
||||||
if (delta == 0)
|
if (delta == 0)
|
||||||
_glfwInputJoystickAxis(jid, i, 0.f);
|
_glfwInputJoystickAxis(js, i, 0.f);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const float value = (2.f * (raw - axis->minimum) / delta) - 1.f;
|
const float value = (2.f * (raw - axis->minimum) / delta) - 1.f;
|
||||||
_glfwInputJoystickAxis(jid, i, value);
|
_glfwInputJoystickAxis(js, i, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -424,7 +422,7 @@ int _glfwPlatformPollJoystick(int jid, int mode)
|
|||||||
_GLFWjoyelementNS* button = (_GLFWjoyelementNS*)
|
_GLFWjoyelementNS* button = (_GLFWjoyelementNS*)
|
||||||
CFArrayGetValueAtIndex(js->ns.buttons, i);
|
CFArrayGetValueAtIndex(js->ns.buttons, i);
|
||||||
const char value = getElementValue(js, button) - button->minimum;
|
const char value = getElementValue(js, button) - button->minimum;
|
||||||
_glfwInputJoystickButton(jid, i, value);
|
_glfwInputJoystickButton(js, i, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < CFArrayGetCount(js->ns.hats); i++)
|
for (i = 0; i < CFArrayGetCount(js->ns.hats); i++)
|
||||||
@ -448,7 +446,7 @@ int _glfwPlatformPollJoystick(int jid, int mode)
|
|||||||
if (state < 0 || state > 8)
|
if (state < 0 || state > 8)
|
||||||
state = 8;
|
state = 8;
|
||||||
|
|
||||||
_glfwInputJoystickHat(jid, i, states[state]);
|
_glfwInputJoystickHat(js, i, states[state]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
92
src/input.c
92
src/input.c
@ -256,25 +256,24 @@ void _glfwInputDrop(_GLFWwindow* window, int count, const char** paths)
|
|||||||
window->callbacks.drop((GLFWwindow*) window, count, paths);
|
window->callbacks.drop((GLFWwindow*) window, count, paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwInputJoystick(int jid, int event)
|
void _glfwInputJoystick(_GLFWjoystick* js, int event)
|
||||||
{
|
{
|
||||||
if (_glfw.callbacks.joystick)
|
if (_glfw.callbacks.joystick)
|
||||||
_glfw.callbacks.joystick(jid, event);
|
_glfw.callbacks.joystick(js - _glfw.joysticks, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwInputJoystickAxis(int jid, int axis, float value)
|
void _glfwInputJoystickAxis(_GLFWjoystick* js, int axis, float value)
|
||||||
{
|
{
|
||||||
_glfw.joysticks[jid].axes[axis] = value;
|
js->axes[axis] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwInputJoystickButton(int jid, int button, char value)
|
void _glfwInputJoystickButton(_GLFWjoystick* js, int button, char value)
|
||||||
{
|
{
|
||||||
_glfw.joysticks[jid].buttons[button] = value;
|
js->buttons[button] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwInputJoystickHat(int jid, int hat, char value)
|
void _glfwInputJoystickHat(_GLFWjoystick* js, int hat, char value)
|
||||||
{
|
{
|
||||||
_GLFWjoystick* js = _glfw.joysticks + jid;
|
|
||||||
const int base = js->buttonCount + hat * 4;
|
const int base = js->buttonCount + hat * 4;
|
||||||
|
|
||||||
js->buttons[base + 0] = (value & 0x01) ? GLFW_PRESS : GLFW_RELEASE;
|
js->buttons[base + 0] = (value & 0x01) ? GLFW_PRESS : GLFW_RELEASE;
|
||||||
@ -753,6 +752,8 @@ GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* handle, GLFWdropfun cbfun)
|
|||||||
|
|
||||||
GLFWAPI int glfwJoystickPresent(int jid)
|
GLFWAPI int glfwJoystickPresent(int jid)
|
||||||
{
|
{
|
||||||
|
_GLFWjoystick* js;
|
||||||
|
|
||||||
assert(jid >= GLFW_JOYSTICK_1);
|
assert(jid >= GLFW_JOYSTICK_1);
|
||||||
assert(jid <= GLFW_JOYSTICK_LAST);
|
assert(jid <= GLFW_JOYSTICK_LAST);
|
||||||
|
|
||||||
@ -764,14 +765,17 @@ GLFWAPI int glfwJoystickPresent(int jid)
|
|||||||
return GLFW_FALSE;
|
return GLFW_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_glfw.joysticks[jid].present)
|
js = _glfw.joysticks + jid;
|
||||||
|
if (!js->present)
|
||||||
return GLFW_FALSE;
|
return GLFW_FALSE;
|
||||||
|
|
||||||
return _glfwPlatformPollJoystick(jid, _GLFW_POLL_PRESENCE);
|
return _glfwPlatformPollJoystick(js, _GLFW_POLL_PRESENCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count)
|
GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count)
|
||||||
{
|
{
|
||||||
|
_GLFWjoystick* js;
|
||||||
|
|
||||||
assert(jid >= GLFW_JOYSTICK_1);
|
assert(jid >= GLFW_JOYSTICK_1);
|
||||||
assert(jid <= GLFW_JOYSTICK_LAST);
|
assert(jid <= GLFW_JOYSTICK_LAST);
|
||||||
assert(count != NULL);
|
assert(count != NULL);
|
||||||
@ -786,18 +790,21 @@ GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_glfw.joysticks[jid].present)
|
js = _glfw.joysticks + jid;
|
||||||
|
if (!js->present)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!_glfwPlatformPollJoystick(jid, _GLFW_POLL_AXES))
|
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_AXES))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
*count = _glfw.joysticks[jid].axisCount;
|
*count = js->axisCount;
|
||||||
return _glfw.joysticks[jid].axes;
|
return js->axes;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count)
|
GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count)
|
||||||
{
|
{
|
||||||
|
_GLFWjoystick* js;
|
||||||
|
|
||||||
assert(jid >= GLFW_JOYSTICK_1);
|
assert(jid >= GLFW_JOYSTICK_1);
|
||||||
assert(jid <= GLFW_JOYSTICK_LAST);
|
assert(jid <= GLFW_JOYSTICK_LAST);
|
||||||
assert(count != NULL);
|
assert(count != NULL);
|
||||||
@ -812,25 +819,25 @@ GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_glfw.joysticks[jid].present)
|
js = _glfw.joysticks + jid;
|
||||||
|
if (!js->present)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!_glfwPlatformPollJoystick(jid, _GLFW_POLL_BUTTONS))
|
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_BUTTONS))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (_glfw.hints.init.hatButtons)
|
if (_glfw.hints.init.hatButtons)
|
||||||
{
|
*count = js->buttonCount + js->hatCount * 4;
|
||||||
*count = _glfw.joysticks[jid].buttonCount +
|
|
||||||
_glfw.joysticks[jid].hatCount * 4;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
*count = _glfw.joysticks[jid].buttonCount;
|
*count = js->buttonCount;
|
||||||
|
|
||||||
return _glfw.joysticks[jid].buttons;
|
return js->buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count)
|
GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count)
|
||||||
{
|
{
|
||||||
|
_GLFWjoystick* js;
|
||||||
|
|
||||||
assert(jid >= GLFW_JOYSTICK_1);
|
assert(jid >= GLFW_JOYSTICK_1);
|
||||||
assert(jid <= GLFW_JOYSTICK_LAST);
|
assert(jid <= GLFW_JOYSTICK_LAST);
|
||||||
assert(count != NULL);
|
assert(count != NULL);
|
||||||
@ -845,18 +852,21 @@ GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_glfw.joysticks[jid].present)
|
js = _glfw.joysticks + jid;
|
||||||
|
if (!js->present)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!_glfwPlatformPollJoystick(jid, _GLFW_POLL_BUTTONS))
|
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_BUTTONS))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
*count = _glfw.joysticks[jid].hatCount;
|
*count = js->hatCount;
|
||||||
return _glfw.joysticks[jid].hats;
|
return js->hats;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI const char* glfwGetJoystickName(int jid)
|
GLFWAPI const char* glfwGetJoystickName(int jid)
|
||||||
{
|
{
|
||||||
|
_GLFWjoystick* js;
|
||||||
|
|
||||||
assert(jid >= GLFW_JOYSTICK_1);
|
assert(jid >= GLFW_JOYSTICK_1);
|
||||||
assert(jid <= GLFW_JOYSTICK_LAST);
|
assert(jid <= GLFW_JOYSTICK_LAST);
|
||||||
|
|
||||||
@ -868,13 +878,14 @@ GLFWAPI const char* glfwGetJoystickName(int jid)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_glfw.joysticks[jid].present)
|
js = _glfw.joysticks + jid;
|
||||||
|
if (!js->present)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!_glfwPlatformPollJoystick(jid, _GLFW_POLL_PRESENCE))
|
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_PRESENCE))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return _glfw.joysticks[jid].name;
|
return js->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun)
|
GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun)
|
||||||
@ -944,6 +955,8 @@ GLFWAPI int glfwUpdateGamepadMappings(const char* string)
|
|||||||
|
|
||||||
GLFWAPI int glfwJoystickIsGamepad(int jid)
|
GLFWAPI int glfwJoystickIsGamepad(int jid)
|
||||||
{
|
{
|
||||||
|
_GLFWjoystick* js;
|
||||||
|
|
||||||
assert(jid >= GLFW_JOYSTICK_1);
|
assert(jid >= GLFW_JOYSTICK_1);
|
||||||
assert(jid <= GLFW_JOYSTICK_LAST);
|
assert(jid <= GLFW_JOYSTICK_LAST);
|
||||||
|
|
||||||
@ -955,17 +968,20 @@ GLFWAPI int glfwJoystickIsGamepad(int jid)
|
|||||||
return GLFW_FALSE;
|
return GLFW_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_glfw.joysticks[jid].present)
|
js = _glfw.joysticks + jid;
|
||||||
|
if (!js->present)
|
||||||
return GLFW_FALSE;
|
return GLFW_FALSE;
|
||||||
|
|
||||||
if (!_glfwPlatformPollJoystick(jid, _GLFW_POLL_PRESENCE))
|
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_PRESENCE))
|
||||||
return GLFW_FALSE;
|
return GLFW_FALSE;
|
||||||
|
|
||||||
return _glfw.joysticks[jid].mapping != NULL;
|
return js->mapping != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI const char* glfwGetGamepadName(int jid)
|
GLFWAPI const char* glfwGetGamepadName(int jid)
|
||||||
{
|
{
|
||||||
|
_GLFWjoystick* js;
|
||||||
|
|
||||||
assert(jid >= GLFW_JOYSTICK_1);
|
assert(jid >= GLFW_JOYSTICK_1);
|
||||||
assert(jid <= GLFW_JOYSTICK_LAST);
|
assert(jid <= GLFW_JOYSTICK_LAST);
|
||||||
|
|
||||||
@ -977,16 +993,17 @@ GLFWAPI const char* glfwGetGamepadName(int jid)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_glfw.joysticks[jid].present)
|
js = _glfw.joysticks + jid;
|
||||||
|
if (!js->present)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!_glfwPlatformPollJoystick(jid, _GLFW_POLL_PRESENCE))
|
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_PRESENCE))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!_glfw.joysticks[jid].mapping)
|
if (!js->mapping)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return _glfw.joysticks[jid].mapping->name;
|
return js->mapping->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state)
|
GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state)
|
||||||
@ -1009,11 +1026,10 @@ GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
js = _glfw.joysticks + jid;
|
js = _glfw.joysticks + jid;
|
||||||
|
|
||||||
if (!js->present)
|
if (!js->present)
|
||||||
return GLFW_FALSE;
|
return GLFW_FALSE;
|
||||||
|
|
||||||
if (!_glfwPlatformPollJoystick(jid, _GLFW_POLL_ALL))
|
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_ALL))
|
||||||
return GLFW_FALSE;
|
return GLFW_FALSE;
|
||||||
|
|
||||||
if (!js->mapping)
|
if (!js->mapping)
|
||||||
|
@ -254,9 +254,6 @@ typedef void (APIENTRY * PFN_vkVoidFunction)(void);
|
|||||||
y = t; \
|
y = t; \
|
||||||
}
|
}
|
||||||
|
|
||||||
// Maps a joystick pointer to an ID
|
|
||||||
#define _GLFW_JOYSTICK_ID(js) ((int) ((js) - _glfw.joysticks))
|
|
||||||
|
|
||||||
|
|
||||||
//========================================================================
|
//========================================================================
|
||||||
// Platform-independent structures
|
// Platform-independent structures
|
||||||
@ -645,7 +642,7 @@ void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
|
|||||||
void _glfwPlatformSetClipboardString(_GLFWwindow* window, const char* string);
|
void _glfwPlatformSetClipboardString(_GLFWwindow* window, const char* string);
|
||||||
const char* _glfwPlatformGetClipboardString(_GLFWwindow* window);
|
const char* _glfwPlatformGetClipboardString(_GLFWwindow* window);
|
||||||
|
|
||||||
int _glfwPlatformPollJoystick(int jid, int mode);
|
int _glfwPlatformPollJoystick(_GLFWjoystick* js, int mode);
|
||||||
void _glfwPlatformUpdateGamepadGUID(char* guid);
|
void _glfwPlatformUpdateGamepadGUID(char* guid);
|
||||||
|
|
||||||
uint64_t _glfwPlatformGetTimerValue(void);
|
uint64_t _glfwPlatformGetTimerValue(void);
|
||||||
@ -866,32 +863,32 @@ void _glfwInputError(int code, const char* format, ...);
|
|||||||
void _glfwInputDrop(_GLFWwindow* window, int count, const char** names);
|
void _glfwInputDrop(_GLFWwindow* window, int count, const char** names);
|
||||||
|
|
||||||
/*! @brief Notifies shared code of a joystick connection or disconnection.
|
/*! @brief Notifies shared code of a joystick connection or disconnection.
|
||||||
* @param[in] jid The joystick that was connected or disconnected.
|
* @param[in] js The joystick that was connected or disconnected.
|
||||||
* @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`.
|
* @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`.
|
||||||
* @ingroup event
|
* @ingroup event
|
||||||
*/
|
*/
|
||||||
void _glfwInputJoystick(int jid, int event);
|
void _glfwInputJoystick(_GLFWjoystick* js, int event);
|
||||||
|
|
||||||
/*! @brief Notifies shared code of the new value of a joystick axis.
|
/*! @brief Notifies shared code of the new value of a joystick axis.
|
||||||
* @param[in] jid The joystick whose axis to update.
|
* @param[in] js The joystick whose axis to update.
|
||||||
* @param[in] axis The index of the axis to update.
|
* @param[in] axis The index of the axis to update.
|
||||||
* @param[in] value The new value of the axis.
|
* @param[in] value The new value of the axis.
|
||||||
*/
|
*/
|
||||||
void _glfwInputJoystickAxis(int jid, int axis, float value);
|
void _glfwInputJoystickAxis(_GLFWjoystick* js, int axis, float value);
|
||||||
|
|
||||||
/*! @brief Notifies shared code of the new value of a joystick button.
|
/*! @brief Notifies shared code of the new value of a joystick button.
|
||||||
* @param[in] jid The joystick whose button to update.
|
* @param[in] js The joystick whose button to update.
|
||||||
* @param[in] button The index of the button to update.
|
* @param[in] button The index of the button to update.
|
||||||
* @param[in] value The new value of the button.
|
* @param[in] value The new value of the button.
|
||||||
*/
|
*/
|
||||||
void _glfwInputJoystickButton(int jid, int button, char value);
|
void _glfwInputJoystickButton(_GLFWjoystick* js, int button, char value);
|
||||||
|
|
||||||
/*! @brief Notifies shared code of the new value of a joystick hat.
|
/*! @brief Notifies shared code of the new value of a joystick hat.
|
||||||
* @param[in] jid The joystick whose hat to update.
|
* @param[in] js The joystick whose hat to update.
|
||||||
* @param[in] button The index of the hat to update.
|
* @param[in] button The index of the hat to update.
|
||||||
* @param[in] value The new value of the hat.
|
* @param[in] value The new value of the hat.
|
||||||
*/
|
*/
|
||||||
void _glfwInputJoystickHat(int jid, int hat, char value);
|
void _glfwInputJoystickHat(_GLFWjoystick* js, int hat, char value);
|
||||||
|
|
||||||
|
|
||||||
//========================================================================
|
//========================================================================
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
//
|
//
|
||||||
static void handleKeyEvent(_GLFWjoystick* js, int code, int value)
|
static void handleKeyEvent(_GLFWjoystick* js, int code, int value)
|
||||||
{
|
{
|
||||||
_glfwInputJoystickButton(_GLFW_JOYSTICK_ID(js),
|
_glfwInputJoystickButton(js,
|
||||||
js->linjs.keyMap[code - BTN_MISC],
|
js->linjs.keyMap[code - BTN_MISC],
|
||||||
value ? GLFW_PRESS : GLFW_RELEASE);
|
value ? GLFW_PRESS : GLFW_RELEASE);
|
||||||
}
|
}
|
||||||
@ -51,7 +51,6 @@ static void handleKeyEvent(_GLFWjoystick* js, int code, int value)
|
|||||||
//
|
//
|
||||||
static void handleAbsEvent(_GLFWjoystick* js, int code, int value)
|
static void handleAbsEvent(_GLFWjoystick* js, int code, int value)
|
||||||
{
|
{
|
||||||
const int jid = _GLFW_JOYSTICK_ID(js);
|
|
||||||
const int index = js->linjs.absMap[code];
|
const int index = js->linjs.absMap[code];
|
||||||
|
|
||||||
if (code >= ABS_HAT0X && code <= ABS_HAT3Y)
|
if (code >= ABS_HAT0X && code <= ABS_HAT3Y)
|
||||||
@ -76,7 +75,7 @@ static void handleAbsEvent(_GLFWjoystick* js, int code, int value)
|
|||||||
else if (value > 0)
|
else if (value > 0)
|
||||||
state[axis] = 2;
|
state[axis] = 2;
|
||||||
|
|
||||||
_glfwInputJoystickHat(jid, index, stateMap[state[0]][state[1]]);
|
_glfwInputJoystickHat(js, index, stateMap[state[0]][state[1]]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -92,7 +91,7 @@ static void handleAbsEvent(_GLFWjoystick* js, int code, int value)
|
|||||||
normalized = normalized * 2.0f - 1.0f;
|
normalized = normalized * 2.0f - 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfwInputJoystickAxis(jid, index, normalized);
|
_glfwInputJoystickAxis(js, index, normalized);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,7 +228,7 @@ static GLFWbool openJoystickDevice(const char* path)
|
|||||||
|
|
||||||
pollAbsState(js);
|
pollAbsState(js);
|
||||||
|
|
||||||
_glfwInputJoystick(_GLFW_JOYSTICK_ID(js), GLFW_CONNECTED);
|
_glfwInputJoystick(js, GLFW_CONNECTED);
|
||||||
return GLFW_TRUE;
|
return GLFW_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -241,7 +240,7 @@ static void closeJoystick(_GLFWjoystick* js)
|
|||||||
{
|
{
|
||||||
close(js->linjs.fd);
|
close(js->linjs.fd);
|
||||||
_glfwFreeJoystick(js);
|
_glfwFreeJoystick(js);
|
||||||
_glfwInputJoystick(_GLFW_JOYSTICK_ID(js), GLFW_DISCONNECTED);
|
_glfwInputJoystick(js, GLFW_DISCONNECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lexically compare joysticks by name; used by qsort
|
// Lexically compare joysticks by name; used by qsort
|
||||||
@ -398,10 +397,8 @@ void _glfwDetectJoystickConnectionLinux(void)
|
|||||||
////// GLFW platform API //////
|
////// GLFW platform API //////
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int _glfwPlatformPollJoystick(int jid, int mode)
|
int _glfwPlatformPollJoystick(_GLFWjoystick* js, int mode)
|
||||||
{
|
{
|
||||||
_GLFWjoystick* js = _glfw.joysticks + jid;
|
|
||||||
|
|
||||||
// Read all queued events (non-blocking)
|
// Read all queued events (non-blocking)
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
@ -254,7 +254,7 @@ static void closeJoystick(_GLFWjoystick* js)
|
|||||||
}
|
}
|
||||||
|
|
||||||
_glfwFreeJoystick(js);
|
_glfwFreeJoystick(js);
|
||||||
_glfwInputJoystick(_GLFW_JOYSTICK_ID(js), GLFW_DISCONNECTED);
|
_glfwInputJoystick(js, GLFW_DISCONNECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// DirectInput device object enumeration callback
|
// DirectInput device object enumeration callback
|
||||||
@ -469,7 +469,7 @@ static BOOL CALLBACK deviceCallback(const DIDEVICEINSTANCE* di, void* user)
|
|||||||
js->win32.objects = data.objects;
|
js->win32.objects = data.objects;
|
||||||
js->win32.objectCount = data.objectCount;
|
js->win32.objectCount = data.objectCount;
|
||||||
|
|
||||||
_glfwInputJoystick(_GLFW_JOYSTICK_ID(js), GLFW_CONNECTED);
|
_glfwInputJoystick(js, GLFW_CONNECTED);
|
||||||
return DIENUM_CONTINUE;
|
return DIENUM_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -552,7 +552,7 @@ void _glfwDetectJoystickConnectionWin32(void)
|
|||||||
|
|
||||||
js->win32.index = index;
|
js->win32.index = index;
|
||||||
|
|
||||||
_glfwInputJoystick(_GLFW_JOYSTICK_ID(js), GLFW_CONNECTED);
|
_glfwInputJoystick(js, GLFW_CONNECTED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -589,10 +589,8 @@ void _glfwDetectJoystickDisconnectionWin32(void)
|
|||||||
////// GLFW platform API //////
|
////// GLFW platform API //////
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int _glfwPlatformPollJoystick(int jid, int mode)
|
int _glfwPlatformPollJoystick(_GLFWjoystick* js, int mode)
|
||||||
{
|
{
|
||||||
_GLFWjoystick* js = _glfw.joysticks + jid;
|
|
||||||
|
|
||||||
if (js->win32.device)
|
if (js->win32.device)
|
||||||
{
|
{
|
||||||
int i, ai = 0, bi = 0, pi = 0;
|
int i, ai = 0, bi = 0, pi = 0;
|
||||||
@ -631,7 +629,7 @@ int _glfwPlatformPollJoystick(int jid, int mode)
|
|||||||
case _GLFW_TYPE_SLIDER:
|
case _GLFW_TYPE_SLIDER:
|
||||||
{
|
{
|
||||||
const float value = (*((LONG*) data) + 0.5f) / 32767.5f;
|
const float value = (*((LONG*) data) + 0.5f) / 32767.5f;
|
||||||
_glfwInputJoystickAxis(jid, ai, value);
|
_glfwInputJoystickAxis(js, ai, value);
|
||||||
ai++;
|
ai++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -639,7 +637,7 @@ int _glfwPlatformPollJoystick(int jid, int mode)
|
|||||||
case _GLFW_TYPE_BUTTON:
|
case _GLFW_TYPE_BUTTON:
|
||||||
{
|
{
|
||||||
const char value = (*((BYTE*) data) & 0x80) != 0;
|
const char value = (*((BYTE*) data) & 0x80) != 0;
|
||||||
_glfwInputJoystickButton(jid, bi, value);
|
_glfwInputJoystickButton(js, bi, value);
|
||||||
bi++;
|
bi++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -664,7 +662,7 @@ int _glfwPlatformPollJoystick(int jid, int mode)
|
|||||||
if (state < 0 || state > 8)
|
if (state < 0 || state > 8)
|
||||||
state = 8;
|
state = 8;
|
||||||
|
|
||||||
_glfwInputJoystickHat(jid, pi, states[state]);
|
_glfwInputJoystickHat(js, pi, states[state]);
|
||||||
pi++;
|
pi++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -728,12 +726,12 @@ int _glfwPlatformPollJoystick(int jid, int mode)
|
|||||||
axes[5] = xis.Gamepad.bRightTrigger / 127.5f - 1.f;
|
axes[5] = xis.Gamepad.bRightTrigger / 127.5f - 1.f;
|
||||||
|
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < 6; i++)
|
||||||
_glfwInputJoystickAxis(jid, i, axes[i]);
|
_glfwInputJoystickAxis(js, i, axes[i]);
|
||||||
|
|
||||||
for (i = 0; i < 10; i++)
|
for (i = 0; i < 10; i++)
|
||||||
{
|
{
|
||||||
const char value = (xis.Gamepad.wButtons & buttons[i]) ? 1 : 0;
|
const char value = (xis.Gamepad.wButtons & buttons[i]) ? 1 : 0;
|
||||||
_glfwInputJoystickButton(jid, i, value);
|
_glfwInputJoystickButton(js, i, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP)
|
if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP)
|
||||||
@ -745,7 +743,7 @@ int _glfwPlatformPollJoystick(int jid, int mode)
|
|||||||
if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT)
|
if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT)
|
||||||
dpad |= GLFW_HAT_LEFT;
|
dpad |= GLFW_HAT_LEFT;
|
||||||
|
|
||||||
_glfwInputJoystickHat(jid, 0, dpad);
|
_glfwInputJoystickHat(js, 0, dpad);
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return GLFW_TRUE;
|
||||||
|
Loading…
Reference in New Issue
Block a user