From 613c6f4f7f3a64f857ca59e453b5e53d01e64899 Mon Sep 17 00:00:00 2001 From: rsn8887 Date: Thu, 16 Feb 2017 03:19:59 -0600 Subject: SDL: More fixes to jerky analog joystick pointer For some engines such as Dreamweb that a previous fix did not apply to, this fixes bug 6996: Android: Mouse pointer control with analog joystick is unusable --- backends/events/symbiansdl/symbiansdl-events.cpp | 36 ++++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'backends/events/symbiansdl') diff --git a/backends/events/symbiansdl/symbiansdl-events.cpp b/backends/events/symbiansdl/symbiansdl-events.cpp index b0d2c25302..6f736bd45d 100644 --- a/backends/events/symbiansdl/symbiansdl-events.cpp +++ b/backends/events/symbiansdl/symbiansdl-events.cpp @@ -56,76 +56,76 @@ bool SymbianSdlEventSource::remapKey(SDL_Event &ev, Common::Event &event) { switch (loop) { case GUI::ACTION_UP: if (ev.type == SDL_KEYDOWN) { - _km.y_vel = -1; + _km.y_vel = -1 * _km.multiplier; _km.y_down_count = 1; } else { - _km.y_vel = 0; + _km.y_vel = 0 * _km.multiplier; _km.y_down_count = 0; } event.type = Common::EVENT_MOUSEMOVE; - processMouseEvent(event, _km.x, _km.y); + processMouseEvent(event, _km.x / _km.multiplier, _km.y / _km.multiplier); return true; case GUI::ACTION_DOWN: if (ev.type == SDL_KEYDOWN) { - _km.y_vel = 1; + _km.y_vel = 1 * _km.multiplier; _km.y_down_count = 1; } else { - _km.y_vel = 0; + _km.y_vel = 0 * _km.multiplier; _km.y_down_count = 0; } event.type = Common::EVENT_MOUSEMOVE; - processMouseEvent(event, _km.x, _km.y); + processMouseEvent(event, _km.x / _km.multiplier, _km.y / _km.multiplier); return true; case GUI::ACTION_LEFT: if (ev.type == SDL_KEYDOWN) { - _km.x_vel = -1; + _km.x_vel = -1 * _km.multiplier; _km.x_down_count = 1; } else { - _km.x_vel = 0; + _km.x_vel = 0 * _km.multiplier; _km.x_down_count = 0; } event.type = Common::EVENT_MOUSEMOVE; - processMouseEvent(event, _km.x, _km.y); + processMouseEvent(event, _km.x / _km.multiplier, _km.y / _km.multiplier); return true; case GUI::ACTION_RIGHT: if (ev.type == SDL_KEYDOWN) { - _km.x_vel = 1; + _km.x_vel = 1 * _km.multiplier; _km.x_down_count = 1; } else { - _km.x_vel = 0; + _km.x_vel = 0 * _km.multiplier; _km.x_down_count = 0; } event.type = Common::EVENT_MOUSEMOVE; - processMouseEvent(event, _km.x, _km.y); + processMouseEvent(event, _km.x / _km.multiplier, _km.y / _km.multiplier); return true; case GUI::ACTION_LEFTCLICK: event.type = (ev.type == SDL_KEYDOWN ? Common::EVENT_LBUTTONDOWN : Common::EVENT_LBUTTONUP); - processMouseEvent(event, _km.x, _km.y); + processMouseEvent(event, _km.x / _km.multiplier, _km.y / _km.multiplier); return true; case GUI::ACTION_RIGHTCLICK: event.type = (ev.type == SDL_KEYDOWN ? Common::EVENT_RBUTTONDOWN : Common::EVENT_RBUTTONUP); - processMouseEvent(event, _km.x, _km.y); + processMouseEvent(event, _km.x / _km.multiplier, _km.y / _km.multiplier); return true; case GUI::ACTION_ZONE: if (ev.type == SDL_KEYDOWN) { for (int i = 0; i < TOTAL_ZONES; i++) - if (_km.x >= _zones[i].x && _km.y >= _zones[i].y && - _km.x <= _zones[i].x + _zones[i].width && _km.y <= _zones[i].y + _zones[i].height + if ( (_km.x / _km.multiplier) >= _zones[i].x && (_km.y / _km.multiplier) >= _zones[i].y && + (_km.x / _km.multiplier) <= _zones[i].x + _zones[i].width && (_km.y / _km.multiplier <= _zones[i].y + _zones[i].height ) { - _mouseXZone[i] = _km.x; - _mouseYZone[i] = _km.y; + _mouseXZone[i] = _km.x / _km.multiplier; + _mouseYZone[i] = _km.y / _km.multiplier; break; } _currentZone++; -- cgit v1.2.3