From ce8bbfaf547c7b96a52e5da34e5022461ff80556 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Fri, 1 Jan 2021 08:37:32 -0800 Subject: [PATCH] Windows: Fix some type conversion warnings. --- Windows/DinputDevice.cpp | 31 +++++++++++++++++-------------- Windows/DinputDevice.h | 12 ++++++------ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/Windows/DinputDevice.cpp b/Windows/DinputDevice.cpp index d59874d680..4d415b7c8a 100644 --- a/Windows/DinputDevice.cpp +++ b/Windows/DinputDevice.cpp @@ -203,7 +203,7 @@ DinputDevice::~DinputDevice() { } } -void SendNativeAxis(int deviceId, short value, short &lastValue, int axisId) { +void SendNativeAxis(int deviceId, int value, int &lastValue, int axisId) { if (value == lastValue) return; @@ -216,11 +216,14 @@ void SendNativeAxis(int deviceId, short value, short &lastValue, int axisId) { lastValue = value; } -inline float Signs(short val) { +inline int Signs(int val) { return (0 < val) - (val < 0); } -inline float LinearMaps(short val, short a0, short a1, short b0, short b1) { +inline int LinearMaps(int val, int a0, int a1, int b0, int b1) { + return b0 + (((val - a0) * (b1 - b0)) / (a1 - a0)); +} +inline float LinearMaps(float val, float a0, float a1, float b0, float b1) { return b0 + (((val - a0) * (b1 - b0)) / (a1 - a0)); } @@ -244,11 +247,11 @@ int DinputDevice::UpdateState() { axis.deviceId = DEVICE_ID_PAD_0 + pDevNum; // Circle to Square mapping, cribbed from XInputDevice - float sx = js.lX; - float sy = js.lY; + float sx = (float)js.lX; + float sy = (float)js.lY; float scaleFactor = sqrtf((sx * sx + sy * sy) / std::max(sx * sx, sy * sy)); - js.lX = (short)(sx * scaleFactor); - js.lY = (short)(sy * scaleFactor); + js.lX = (int)(sx * scaleFactor); + js.lY = (int)(sy * scaleFactor); // Linear range mapping (used to invert deadzones) float dz = g_Config.fDInputAnalogDeadzone; @@ -257,20 +260,20 @@ int DinputDevice::UpdateState() { float md = std::max(dz, idz); float st = g_Config.fDInputAnalogSensitivity; - float magnitude = sqrtf(js.lX * js.lX + js.lY * js.lY); + float magnitude = sqrtf((float)(js.lX * js.lX + js.lY * js.lY)); if (magnitude > dz * 10000.0f) { if (idzm == 1) { - short xSign = Signs(js.lX); - if (xSign != 0.0f) { - js.lX = LinearMaps(js.lX, xSign * (short)(dz * 10000), xSign * 10000, xSign * (short)(md * 10000), xSign * 10000 * st); + int xSign = Signs(js.lX); + if (xSign != 0) { + js.lX = LinearMaps(js.lX, xSign * (int)(dz * 10000), xSign * 10000, xSign * (int)(md * 10000), xSign * (int)(st * 10000)); } } else if (idzm == 2) { - short ySign = Signs(js.lY); - if (ySign != 0.0f) { - js.lY = LinearMaps(js.lY, ySign * (short)(dz * 10000.0f), ySign * 10000, ySign * (short)(md * 10000.0f), ySign * 10000 * st); + int ySign = Signs(js.lY); + if (ySign != 0) { + js.lY = LinearMaps(js.lY, ySign * (int)(dz * 10000.0f), ySign * 10000, ySign * (int)(md * 10000.0f), ySign * (int)(st * 10000)); } } else if (idzm == 3) diff --git a/Windows/DinputDevice.h b/Windows/DinputDevice.h index 796b5e265c..d8ecc8762f 100644 --- a/Windows/DinputDevice.h +++ b/Windows/DinputDevice.h @@ -62,10 +62,10 @@ private: bool analog; BYTE lastButtons_[128]; WORD lastPOV_[4]; - short last_lX_; - short last_lY_; - short last_lZ_; - short last_lRx_; - short last_lRy_; - short last_lRz_; + int last_lX_; + int last_lY_; + int last_lZ_; + int last_lRx_; + int last_lRy_; + int last_lRz_; };