mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 17:59:20 -04:00
emulators/ppsspp: unbreak joystick mappings with OLDJOY=off (default)
Changes: https://github.com/hrydgard/ppsspp/commit/ac0052c6af92 MFH: 2017Q4 (requires r451582)
This commit is contained in:
parent
f15e791b3b
commit
8e42bc6858
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=452123
5 changed files with 56 additions and 518 deletions
|
@ -14,6 +14,4 @@ GH_TUPLE= hrydgard:glslang:136b1e2d:glslang/ext/glslang \
|
||||||
MASTERDIR= ${.CURDIR}/../ppsspp
|
MASTERDIR= ${.CURDIR}/../ppsspp
|
||||||
DISTINFO_FILE= ${.CURDIR}/distinfo
|
DISTINFO_FILE= ${.CURDIR}/distinfo
|
||||||
|
|
||||||
OLDJOY_EXTRA_PATCHES= ${.CURDIR}/files/extra-patch-old-joy
|
|
||||||
|
|
||||||
.include "${MASTERDIR}/Makefile"
|
.include "${MASTERDIR}/Makefile"
|
||||||
|
|
|
@ -1,477 +0,0 @@
|
||||||
The patch reverts SDL_GameController API usage from:
|
|
||||||
|
|
||||||
https://github.com/hrydgard/ppsspp/commit/67425d7d477d
|
|
||||||
https://github.com/hrydgard/ppsspp/commit/db2cc49e0dd1
|
|
||||||
https://github.com/hrydgard/ppsspp/commit/e4a0a3cea3bc
|
|
||||||
https://github.com/hrydgard/ppsspp/commit/182b9e0fdae3
|
|
||||||
https://github.com/hrydgard/ppsspp/commit/d6b81236626f
|
|
||||||
https://github.com/hrydgard/ppsspp/commit/b058b987ad0f
|
|
||||||
https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
|
||||||
https://github.com/hrydgard/ppsspp/commit/ac0052c6af92
|
|
||||||
|
|
||||||
--- SDL/SDLJoystick.cpp.orig 2017-10-04 19:26:40 UTC
|
|
||||||
+++ SDL/SDLJoystick.cpp
|
|
||||||
@@ -1,13 +1,8 @@
|
|
||||||
#include "SDL/SDLJoystick.h"
|
|
||||||
#include "Core/Config.h"
|
|
||||||
-#include "Common/FileUtil.h"
|
|
||||||
-#include "file/vfs.h"
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
-#include <string>
|
|
||||||
|
|
||||||
-using namespace std;
|
|
||||||
-
|
|
||||||
static int SDLJoystickEventHandlerWrapper(void* userdata, SDL_Event* event)
|
|
||||||
{
|
|
||||||
static_cast<SDLJoystick *>(userdata)->ProcessInput(*event);
|
|
||||||
@@ -17,79 +12,30 @@ static int SDLJoystickEventHandlerWrapper(void* userda
|
|
||||||
SDLJoystick::SDLJoystick(bool init_SDL ) : registeredAsEventHandler(false) {
|
|
||||||
SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1");
|
|
||||||
if (init_SDL) {
|
|
||||||
- SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER);
|
|
||||||
+ SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO);
|
|
||||||
}
|
|
||||||
|
|
||||||
- const char *dbPath = "gamecontrollerdb.txt";
|
|
||||||
- cout << "loading control pad mappings from " << dbPath << ": ";
|
|
||||||
-
|
|
||||||
- size_t size;
|
|
||||||
- u8 *mappingData = VFSReadFile(dbPath, &size);
|
|
||||||
- if (mappingData) {
|
|
||||||
- SDL_RWops *rw = SDL_RWFromConstMem(mappingData, size);
|
|
||||||
- // 1 to free the rw after use
|
|
||||||
- if (SDL_GameControllerAddMappingsFromRW(rw, 1) == -1) {
|
|
||||||
- cout << "Failed to read mapping data - corrupt?" << endl;
|
|
||||||
- }
|
|
||||||
- delete[] mappingData;
|
|
||||||
- } else {
|
|
||||||
- cout << "gamecontrollerdb.txt missing" << endl;
|
|
||||||
- }
|
|
||||||
- cout << "SUCCESS!" << endl;
|
|
||||||
- setUpControllers();
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-void SDLJoystick::setUpControllers() {
|
|
||||||
int numjoys = SDL_NumJoysticks();
|
|
||||||
+ SDL_JoystickEventState(SDL_ENABLE);
|
|
||||||
for (int i = 0; i < numjoys; i++) {
|
|
||||||
- setUpController(i);
|
|
||||||
+ joys.push_back(SDL_JoystickOpen(i));
|
|
||||||
+// printf("Initialized joystick %d: %s",i,SDL_JoystickNameForIndex(i));
|
|
||||||
+ if(strstr(SDL_JoystickNameForIndex(i),"PLAYSTATION(R)3 Controller"))
|
|
||||||
+ g_Config.bPS3Controller = true;
|
|
||||||
}
|
|
||||||
- if (controllers.size() > 0) {
|
|
||||||
- cout << "pad 1 has been assigned to control pad: " << SDL_GameControllerName(controllers.front()) << endl;
|
|
||||||
- }
|
|
||||||
-}
|
|
||||||
|
|
||||||
-void SDLJoystick::setUpController(int deviceIndex) {
|
|
||||||
- if (!SDL_IsGameController(deviceIndex)) {
|
|
||||||
- cout << "Control pad device " << deviceIndex << " not supported by SDL game controller database, attempting to create default mapping..." << endl;
|
|
||||||
- int cbGUID = 33;
|
|
||||||
- char pszGUID[cbGUID];
|
|
||||||
- SDL_Joystick* joystick = SDL_JoystickOpen(deviceIndex);
|
|
||||||
- SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick), pszGUID, cbGUID);
|
|
||||||
- // create default mapping - this is the PS3 dual shock mapping
|
|
||||||
- std::string mapping = string(pszGUID) + "," + string(SDL_JoystickName(joystick)) + ",x:b3,a:b0,b:b1,y:b2,back:b8,guide:b10,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:a5,leftstick:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4";
|
|
||||||
- if (SDL_GameControllerAddMapping(mapping.c_str()) == 1){
|
|
||||||
- cout << "Added default mapping ok" << endl;
|
|
||||||
- } else {
|
|
||||||
- cout << "Failed to add default mapping" << endl;
|
|
||||||
- }
|
|
||||||
- SDL_JoystickClose(joystick);
|
|
||||||
- }
|
|
||||||
- SDL_GameController *controller = SDL_GameControllerOpen(deviceIndex);
|
|
||||||
- if (controller) {
|
|
||||||
- if (SDL_GameControllerGetAttached(controller)) {
|
|
||||||
- controllers.push_back(controller);
|
|
||||||
- controllerDeviceMap[SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(controller))] = deviceIndex;
|
|
||||||
- cout << "found control pad: " << SDL_GameControllerName(controller) << ", loading mapping: ";
|
|
||||||
- auto mapping = SDL_GameControllerMapping(controller);
|
|
||||||
- if (mapping == NULL) {
|
|
||||||
- //cout << "FAILED" << endl;
|
|
||||||
- cout << "Could not find mapping in SDL2 controller database" << endl;
|
|
||||||
- } else {
|
|
||||||
- cout << "SUCCESS, mapping is:" << endl << mapping << endl;
|
|
||||||
- }
|
|
||||||
- } else {
|
|
||||||
- SDL_GameControllerClose(controller);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
+ if (g_Config.bPS3Controller)
|
|
||||||
+ fillMappingPS3();
|
|
||||||
+ else
|
|
||||||
+ fillMapping();
|
|
||||||
}
|
|
||||||
|
|
||||||
SDLJoystick::~SDLJoystick() {
|
|
||||||
if (registeredAsEventHandler) {
|
|
||||||
SDL_DelEventWatch(SDLJoystickEventHandlerWrapper, this);
|
|
||||||
}
|
|
||||||
- for (auto & controller : controllers) {
|
|
||||||
- SDL_GameControllerClose(controller);
|
|
||||||
+ for (SDL_Joystick *joy : joys) {
|
|
||||||
+ SDL_JoystickClose(joy);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -98,107 +44,124 @@ void SDLJoystick::registerEventHandler() {
|
|
||||||
registeredAsEventHandler = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
-keycode_t SDLJoystick::getKeycodeForButton(SDL_GameControllerButton button) {
|
|
||||||
- switch (button) {
|
|
||||||
- case SDL_CONTROLLER_BUTTON_DPAD_UP:
|
|
||||||
- return NKCODE_DPAD_UP;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_DPAD_DOWN:
|
|
||||||
- return NKCODE_DPAD_DOWN;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_DPAD_LEFT:
|
|
||||||
- return NKCODE_DPAD_LEFT;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_DPAD_RIGHT:
|
|
||||||
- return NKCODE_DPAD_RIGHT;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_A:
|
|
||||||
- return NKCODE_BUTTON_2;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_B:
|
|
||||||
- return NKCODE_BUTTON_3;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_X:
|
|
||||||
- return NKCODE_BUTTON_4;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_Y:
|
|
||||||
- return NKCODE_BUTTON_1;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER:
|
|
||||||
- return NKCODE_BUTTON_5;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_LEFTSHOULDER:
|
|
||||||
- return NKCODE_BUTTON_6;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_START:
|
|
||||||
- return NKCODE_BUTTON_10;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_BACK:
|
|
||||||
- return NKCODE_BUTTON_9; // select button
|
|
||||||
- case SDL_CONTROLLER_BUTTON_GUIDE:
|
|
||||||
- return NKCODE_BACK; // pause menu
|
|
||||||
- case SDL_CONTROLLER_BUTTON_LEFTSTICK:
|
|
||||||
- return NKCODE_BUTTON_THUMBL;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_RIGHTSTICK:
|
|
||||||
- return NKCODE_BUTTON_THUMBR;
|
|
||||||
- case SDL_CONTROLLER_BUTTON_INVALID:
|
|
||||||
- default:
|
|
||||||
- return NKCODE_UNKNOWN;
|
|
||||||
- }
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
void SDLJoystick::ProcessInput(SDL_Event &event){
|
|
||||||
switch (event.type) {
|
|
||||||
- case SDL_CONTROLLERBUTTONDOWN:
|
|
||||||
- if (event.cbutton.state == SDL_PRESSED) {
|
|
||||||
- auto code = getKeycodeForButton((SDL_GameControllerButton)event.cbutton.button);
|
|
||||||
- if (code != NKCODE_UNKNOWN) {
|
|
||||||
+ case SDL_JOYAXISMOTION:
|
|
||||||
+ {
|
|
||||||
+ std::map<int, int>::const_iterator i = SDLJoyAxisMap.find(event.jaxis.axis);
|
|
||||||
+ int deviceIndex = getDeviceIndex(event.jaxis.which);
|
|
||||||
+ if (i != SDLJoyAxisMap.end() && deviceIndex >= 0) {
|
|
||||||
+ AxisInput axis;
|
|
||||||
+ axis.axisId = i->second;
|
|
||||||
+ // 1.2 to try to approximate the PSP's clamped rectangular range.
|
|
||||||
+ axis.value = 1.2 * event.jaxis.value * g_Config.fXInputAnalogSensitivity / 32767.0f;
|
|
||||||
+ if (axis.value > 1.0f) axis.value = 1.0f;
|
|
||||||
+ if (axis.value < -1.0f) axis.value = -1.0f;
|
|
||||||
+ axis.deviceId = DEVICE_ID_PAD_0 + deviceIndex;
|
|
||||||
+ axis.flags = 0;
|
|
||||||
+ NativeAxis(axis);
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ case SDL_JOYBUTTONDOWN:
|
|
||||||
+ {
|
|
||||||
+ std::map<int, int>::const_iterator i = SDLJoyButtonMap.find(event.jbutton.button);
|
|
||||||
+ int deviceIndex = getDeviceIndex(event.jbutton.which);
|
|
||||||
+ if (i != SDLJoyButtonMap.end() && deviceIndex >= 0) {
|
|
||||||
KeyInput key;
|
|
||||||
key.flags = KEY_DOWN;
|
|
||||||
- key.keyCode = code;
|
|
||||||
- key.deviceId = DEVICE_ID_PAD_0 + getDeviceIndex(event.cbutton.which);
|
|
||||||
+ key.keyCode = i->second;
|
|
||||||
+ key.deviceId = DEVICE_ID_PAD_0 + deviceIndex;
|
|
||||||
NativeKey(key);
|
|
||||||
}
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
- break;
|
|
||||||
- case SDL_CONTROLLERBUTTONUP:
|
|
||||||
- if (event.cbutton.state == SDL_RELEASED) {
|
|
||||||
- auto code = getKeycodeForButton((SDL_GameControllerButton)event.cbutton.button);
|
|
||||||
- if (code != NKCODE_UNKNOWN) {
|
|
||||||
+
|
|
||||||
+ case SDL_JOYBUTTONUP:
|
|
||||||
+ {
|
|
||||||
+ std::map<int, int>::const_iterator i = SDLJoyButtonMap.find(event.jbutton.button);
|
|
||||||
+ int deviceIndex = getDeviceIndex(event.jbutton.which);
|
|
||||||
+ if (i != SDLJoyButtonMap.end() && deviceIndex >= 0) {
|
|
||||||
KeyInput key;
|
|
||||||
key.flags = KEY_UP;
|
|
||||||
- key.keyCode = code;
|
|
||||||
- key.deviceId = DEVICE_ID_PAD_0 + getDeviceIndex(event.cbutton.which);
|
|
||||||
+ key.keyCode = i->second;
|
|
||||||
+ key.deviceId = DEVICE_ID_PAD_0 + deviceIndex;
|
|
||||||
NativeKey(key);
|
|
||||||
}
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
- break;
|
|
||||||
- case SDL_CONTROLLERAXISMOTION:
|
|
||||||
- AxisInput axis;
|
|
||||||
- axis.axisId = event.caxis.axis;
|
|
||||||
- // 1.2 to try to approximate the PSP's clamped rectangular range.
|
|
||||||
- axis.value = 1.2 * event.caxis.value * g_Config.fXInputAnalogSensitivity / 32767.0f;
|
|
||||||
- if (axis.value > 1.0f) axis.value = 1.0f;
|
|
||||||
- if (axis.value < -1.0f) axis.value = -1.0f;
|
|
||||||
- axis.deviceId = DEVICE_ID_PAD_0 + getDeviceIndex(event.caxis.which);
|
|
||||||
- axis.flags = 0;
|
|
||||||
- NativeAxis(axis);
|
|
||||||
- break;
|
|
||||||
- case SDL_CONTROLLERDEVICEREMOVED:
|
|
||||||
- // for removal events, "which" is the instance ID for SDL_CONTROLLERDEVICEREMOVED
|
|
||||||
- for (auto it = controllers.begin(); it != controllers.end(); ++it) {
|
|
||||||
- if (SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(*it)) == event.cdevice.which) {
|
|
||||||
- SDL_GameControllerClose(*it);
|
|
||||||
- controllers.erase(it);
|
|
||||||
+
|
|
||||||
+ case SDL_JOYHATMOTION:
|
|
||||||
+ {
|
|
||||||
+ int deviceIndex = getDeviceIndex(event.jhat.which);
|
|
||||||
+ if (deviceIndex < 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
+#ifdef _WIN32
|
|
||||||
+ KeyInput key;
|
|
||||||
+ key.deviceId = DEVICE_ID_PAD_0 + deviceIndex;
|
|
||||||
+
|
|
||||||
+ key.flags = (event.jhat.value & SDL_HAT_UP)?KEY_DOWN:KEY_UP;
|
|
||||||
+ key.keyCode = NKCODE_DPAD_UP;
|
|
||||||
+ NativeKey(key);
|
|
||||||
+ key.flags = (event.jhat.value & SDL_HAT_LEFT)?KEY_DOWN:KEY_UP;
|
|
||||||
+ key.keyCode = NKCODE_DPAD_LEFT;
|
|
||||||
+ NativeKey(key);
|
|
||||||
+ key.flags = (event.jhat.value & SDL_HAT_DOWN)?KEY_DOWN:KEY_UP;
|
|
||||||
+ key.keyCode = NKCODE_DPAD_DOWN;
|
|
||||||
+ NativeKey(key);
|
|
||||||
+ key.flags = (event.jhat.value & SDL_HAT_RIGHT)?KEY_DOWN:KEY_UP;
|
|
||||||
+ key.keyCode = NKCODE_DPAD_RIGHT;
|
|
||||||
+ NativeKey(key);
|
|
||||||
+#else
|
|
||||||
+ AxisInput axisX;
|
|
||||||
+ AxisInput axisY;
|
|
||||||
+ axisX.axisId = JOYSTICK_AXIS_HAT_X;
|
|
||||||
+ axisY.axisId = JOYSTICK_AXIS_HAT_Y;
|
|
||||||
+ axisX.deviceId = DEVICE_ID_PAD_0 + deviceIndex;
|
|
||||||
+ axisY.deviceId = DEVICE_ID_PAD_0 + deviceIndex;
|
|
||||||
+ axisX.value = 0.0f;
|
|
||||||
+ axisY.value = 0.0f;
|
|
||||||
+ if (event.jhat.value & SDL_HAT_LEFT) axisX.value = -1.0f;
|
|
||||||
+ if (event.jhat.value & SDL_HAT_RIGHT) axisX.value = 1.0f;
|
|
||||||
+ if (event.jhat.value & SDL_HAT_DOWN) axisY.value = 1.0f;
|
|
||||||
+ if (event.jhat.value & SDL_HAT_UP) axisY.value = -1.0f;
|
|
||||||
+ NativeAxis(axisX);
|
|
||||||
+ NativeAxis(axisY);
|
|
||||||
+#endif
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
- break;
|
|
||||||
- case SDL_CONTROLLERDEVICEADDED:
|
|
||||||
- // for add events, "which" is the device index!
|
|
||||||
- int prevNumControllers = controllers.size();
|
|
||||||
- setUpController(event.cdevice.which);
|
|
||||||
- if (prevNumControllers == 0 && controllers.size() > 0) {
|
|
||||||
- cout << "pad 1 has been assigned to control pad: " << SDL_GameControllerName(controllers.front()) << endl;
|
|
||||||
+
|
|
||||||
+ case SDL_JOYDEVICEADDED:
|
|
||||||
+ {
|
|
||||||
+ int deviceIndex = event.jdevice.which;
|
|
||||||
+ if (deviceIndex >= joys.size()) {
|
|
||||||
+ joys.resize(deviceIndex+1);
|
|
||||||
+ }
|
|
||||||
+ joys[deviceIndex] = SDL_JoystickOpen(deviceIndex);
|
|
||||||
+ SDL_JoystickEventState(SDL_ENABLE);
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
- break;
|
|
||||||
+
|
|
||||||
+ case SDL_JOYDEVICEREMOVED:
|
|
||||||
+ {
|
|
||||||
+ int deviceIndex = getDeviceIndex(event.jdevice.which);
|
|
||||||
+ if (deviceIndex >= 0) {
|
|
||||||
+ SDL_JoystickClose(joys[deviceIndex]);
|
|
||||||
+ joys[deviceIndex] = 0;
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int SDLJoystick::getDeviceIndex(int instanceId) {
|
|
||||||
- auto it = controllerDeviceMap.find(instanceId);
|
|
||||||
- if (it == controllerDeviceMap.end()) {
|
|
||||||
- // could not find device
|
|
||||||
- return -1;
|
|
||||||
+ for (int i = 0; i < joys.size(); i++) {
|
|
||||||
+ SDL_Joystick *joy = joys[i];
|
|
||||||
+ if (SDL_JoystickInstanceID(joy) == instanceId) {
|
|
||||||
+ return i;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
- return it->second;
|
|
||||||
+ return -1;
|
|
||||||
}
|
|
||||||
--- SDL/SDLJoystick.h.orig 2017-10-04 19:26:40 UTC
|
|
||||||
+++ SDL/SDLJoystick.h
|
|
||||||
@@ -1,9 +1,11 @@
|
|
||||||
#pragma once
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include "SDL/SDL.h"
|
|
||||||
+#include "SDL/SDL_joystick.h"
|
|
||||||
#include "SDL/SDL_thread.h"
|
|
||||||
#else
|
|
||||||
#include "SDL.h"
|
|
||||||
+#include "SDL_joystick.h"
|
|
||||||
#include "SDL_thread.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -21,11 +23,119 @@ class SDLJoystick{ (public)
|
|
||||||
void ProcessInput(SDL_Event &event);
|
|
||||||
|
|
||||||
private:
|
|
||||||
- void setUpController(int deviceIndex);
|
|
||||||
- void setUpControllers();
|
|
||||||
- keycode_t getKeycodeForButton(SDL_GameControllerButton button);
|
|
||||||
- int getDeviceIndex(int instanceId);
|
|
||||||
+ void fillMappingPS3()
|
|
||||||
+ {
|
|
||||||
+ SDLJoyButtonMap[14] = NKCODE_BUTTON_1; // Cross
|
|
||||||
+ SDLJoyButtonMap[13] = NKCODE_BUTTON_2; // Circle
|
|
||||||
+ SDLJoyButtonMap[15] = NKCODE_BUTTON_3; // Sqlare
|
|
||||||
+ SDLJoyButtonMap[12] = NKCODE_BUTTON_4; // Triangle
|
|
||||||
+ SDLJoyButtonMap[10] = NKCODE_BUTTON_5; // L1
|
|
||||||
+ SDLJoyButtonMap[11] = NKCODE_BUTTON_6; // R1
|
|
||||||
+ SDLJoyButtonMap[8] = NKCODE_BUTTON_7; // L2
|
|
||||||
+ SDLJoyButtonMap[9] = NKCODE_BUTTON_8; // R2
|
|
||||||
+ SDLJoyButtonMap[0] = NKCODE_BUTTON_9; // Select
|
|
||||||
+ SDLJoyButtonMap[3] = NKCODE_BUTTON_10; // Start
|
|
||||||
+ SDLJoyButtonMap[1] = NKCODE_BUTTON_11; // L3
|
|
||||||
+ SDLJoyButtonMap[2] = NKCODE_BUTTON_12; // R3
|
|
||||||
+ SDLJoyButtonMap[16] = NKCODE_BUTTON_13; // PS
|
|
||||||
+ SDLJoyButtonMap[4] = NKCODE_DPAD_UP;
|
|
||||||
+ SDLJoyButtonMap[6] = NKCODE_DPAD_DOWN;
|
|
||||||
+ SDLJoyButtonMap[7] = NKCODE_DPAD_LEFT;
|
|
||||||
+ SDLJoyButtonMap[5] = NKCODE_DPAD_RIGHT;
|
|
||||||
+ SDLJoyAxisMap[0] = JOYSTICK_AXIS_X;
|
|
||||||
+ SDLJoyAxisMap[1] = JOYSTICK_AXIS_Y;
|
|
||||||
+ SDLJoyAxisMap[2] = JOYSTICK_AXIS_Z;
|
|
||||||
+ SDLJoyAxisMap[3] = JOYSTICK_AXIS_RZ;
|
|
||||||
+ }
|
|
||||||
+ void fillMapping()
|
|
||||||
+ {
|
|
||||||
+ //TODO: C++11 aggregate initialization
|
|
||||||
+ //would remove runtime overhead completely
|
|
||||||
+
|
|
||||||
+ // Mapping on Windows
|
|
||||||
+#ifdef _WIN32
|
|
||||||
+ SDLJoyButtonMap[0] = NKCODE_BUTTON_2;
|
|
||||||
+ SDLJoyButtonMap[1] = NKCODE_BUTTON_3;
|
|
||||||
+ SDLJoyButtonMap[2] = NKCODE_BUTTON_4;
|
|
||||||
+ SDLJoyButtonMap[3] = NKCODE_BUTTON_1;
|
|
||||||
+ SDLJoyButtonMap[4] = NKCODE_BUTTON_7;
|
|
||||||
+ SDLJoyButtonMap[5] = NKCODE_BUTTON_8;
|
|
||||||
+ SDLJoyButtonMap[6] = NKCODE_BUTTON_9;
|
|
||||||
+ SDLJoyButtonMap[7] = NKCODE_BUTTON_10;
|
|
||||||
+ SDLJoyButtonMap[8] = NKCODE_BUTTON_11;
|
|
||||||
+ SDLJoyButtonMap[9] = NKCODE_BUTTON_12;
|
|
||||||
+ SDLJoyButtonMap[10] = NKCODE_BUTTON_5;
|
|
||||||
+ SDLJoyButtonMap[11] = NKCODE_BUTTON_6;
|
|
||||||
+ SDLJoyButtonMap[12] = NKCODE_BUTTON_7;
|
|
||||||
+ SDLJoyButtonMap[13] = NKCODE_BUTTON_8;
|
|
||||||
+ SDLJoyButtonMap[14] = NKCODE_BUTTON_9;
|
|
||||||
+
|
|
||||||
+ SDLJoyAxisMap[0] = JOYSTICK_AXIS_X;
|
|
||||||
+ SDLJoyAxisMap[1] = JOYSTICK_AXIS_Y;
|
|
||||||
+ SDLJoyAxisMap[2] = JOYSTICK_AXIS_Z;
|
|
||||||
+ SDLJoyAxisMap[3] = JOYSTICK_AXIS_RZ;
|
|
||||||
+ SDLJoyAxisMap[4] = JOYSTICK_AXIS_LTRIGGER;
|
|
||||||
+ SDLJoyAxisMap[5] = JOYSTICK_AXIS_RTRIGGER;
|
|
||||||
+ // Mapping on MacOSX to match X360 controller
|
|
||||||
+#elif __APPLE__
|
|
||||||
+ SDLJoyButtonMap[0] = NKCODE_DPAD_UP;
|
|
||||||
+ SDLJoyButtonMap[1] = NKCODE_DPAD_DOWN;
|
|
||||||
+ SDLJoyButtonMap[2] = NKCODE_DPAD_LEFT;
|
|
||||||
+ SDLJoyButtonMap[3] = NKCODE_DPAD_RIGHT;
|
|
||||||
+ SDLJoyButtonMap[4] = NKCODE_BUTTON_10;
|
|
||||||
+ SDLJoyButtonMap[5] = NKCODE_BUTTON_9;
|
|
||||||
+ SDLJoyButtonMap[6] = NKCODE_BUTTON_5;
|
|
||||||
+ SDLJoyButtonMap[7] = NKCODE_BUTTON_6;
|
|
||||||
+ SDLJoyButtonMap[8] = NKCODE_BUTTON_7;
|
|
||||||
+ SDLJoyButtonMap[9] = NKCODE_BUTTON_8;
|
|
||||||
+ SDLJoyButtonMap[10] = NKCODE_BUTTON_SELECT;
|
|
||||||
+ SDLJoyButtonMap[11] = NKCODE_BUTTON_2;
|
|
||||||
+ SDLJoyButtonMap[12] = NKCODE_BUTTON_3;
|
|
||||||
+ SDLJoyButtonMap[13] = NKCODE_BUTTON_4;
|
|
||||||
+ SDLJoyButtonMap[14] = NKCODE_BUTTON_1;
|
|
||||||
+ SDLJoyButtonMap[15] = NKCODE_BUTTON_11;
|
|
||||||
+ SDLJoyButtonMap[16] = NKCODE_BUTTON_12;
|
|
||||||
+
|
|
||||||
+ SDLJoyAxisMap[0] = JOYSTICK_AXIS_X;
|
|
||||||
+ SDLJoyAxisMap[1] = JOYSTICK_AXIS_Y;
|
|
||||||
+ SDLJoyAxisMap[2] = JOYSTICK_AXIS_Z;
|
|
||||||
+ SDLJoyAxisMap[3] = JOYSTICK_AXIS_RZ;
|
|
||||||
+ SDLJoyAxisMap[4] = JOYSTICK_AXIS_LTRIGGER;
|
|
||||||
+ SDLJoyAxisMap[5] = JOYSTICK_AXIS_RTRIGGER;
|
|
||||||
+ // Mapping on Linux/Android/Other to match X360 and wii-u pro controller
|
|
||||||
+#else
|
|
||||||
+ SDLJoyButtonMap[0] = NKCODE_BUTTON_1;
|
|
||||||
+ SDLJoyButtonMap[1] = NKCODE_BUTTON_2;
|
|
||||||
+ SDLJoyButtonMap[2] = NKCODE_BUTTON_3;
|
|
||||||
+ SDLJoyButtonMap[3] = NKCODE_BUTTON_4;
|
|
||||||
+ SDLJoyButtonMap[4] = NKCODE_BUTTON_5;
|
|
||||||
+ SDLJoyButtonMap[5] = NKCODE_BUTTON_6;
|
|
||||||
+ SDLJoyButtonMap[6] = NKCODE_BUTTON_7;
|
|
||||||
+ SDLJoyButtonMap[7] = NKCODE_BUTTON_8;
|
|
||||||
+ SDLJoyButtonMap[8] = NKCODE_BUTTON_9;
|
|
||||||
+ SDLJoyButtonMap[9] = NKCODE_BUTTON_10;
|
|
||||||
+ SDLJoyButtonMap[10] = NKCODE_BUTTON_11;
|
|
||||||
+ SDLJoyButtonMap[11] = NKCODE_BUTTON_12;
|
|
||||||
+ SDLJoyButtonMap[12] = NKCODE_BUTTON_13;
|
|
||||||
+ SDLJoyButtonMap[13] = NKCODE_DPAD_UP;
|
|
||||||
+ SDLJoyButtonMap[14] = NKCODE_DPAD_DOWN;
|
|
||||||
+ SDLJoyButtonMap[15] = NKCODE_DPAD_LEFT;
|
|
||||||
+ SDLJoyButtonMap[16] = NKCODE_DPAD_RIGHT;
|
|
||||||
+
|
|
||||||
+ SDLJoyAxisMap[0] = JOYSTICK_AXIS_X;
|
|
||||||
+ SDLJoyAxisMap[1] = JOYSTICK_AXIS_Y;
|
|
||||||
+ SDLJoyAxisMap[2] = JOYSTICK_AXIS_Z;
|
|
||||||
+ SDLJoyAxisMap[3] = JOYSTICK_AXIS_RZ;
|
|
||||||
+ SDLJoyAxisMap[4] = JOYSTICK_AXIS_LTRIGGER;
|
|
||||||
+ SDLJoyAxisMap[5] = JOYSTICK_AXIS_RTRIGGER;
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
+ }
|
|
||||||
+ std::map<int, int> SDLJoyButtonMap;
|
|
||||||
+ std::map<int, int> SDLJoyAxisMap;
|
|
||||||
+
|
|
||||||
+ std::vector<SDL_Joystick *> joys;
|
|
||||||
bool registeredAsEventHandler;
|
|
||||||
- std::vector<SDL_GameController *> controllers;
|
|
||||||
- std::map<int, int> controllerDeviceMap;
|
|
||||||
+
|
|
||||||
+ int getDeviceIndex(int instanceId);
|
|
||||||
};
|
|
||||||
--- ext/native/base/PCMain.cpp.orig 2017-10-04 19:26:40 UTC
|
|
||||||
+++ ext/native/base/PCMain.cpp
|
|
||||||
@@ -428,7 +428,7 @@ int main(int argc, char *argv[]) {
|
|
||||||
NativeGetAppInfo(&app_name, &app_name_nice, &landscape, &version);
|
|
||||||
|
|
||||||
bool joystick_enabled = true;
|
|
||||||
- if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER | SDL_INIT_AUDIO) < 0) {
|
|
||||||
+ if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO) < 0) {
|
|
||||||
joystick_enabled = false;
|
|
||||||
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) {
|
|
||||||
fprintf(stderr, "Unable to initialize SDL: %s\n", SDL_GetError());
|
|
|
@ -3,7 +3,7 @@
|
||||||
PORTNAME= ppsspp
|
PORTNAME= ppsspp
|
||||||
DISTVERSIONPREFIX= v
|
DISTVERSIONPREFIX= v
|
||||||
DISTVERSION?= 1.4.2
|
DISTVERSION?= 1.4.2
|
||||||
PORTREVISION?= 3
|
PORTREVISION?= 4
|
||||||
CATEGORIES= emulators
|
CATEGORIES= emulators
|
||||||
# XXX Get from Debian once #697821 lands
|
# XXX Get from Debian once #697821 lands
|
||||||
MASTER_SITES= https://bazaar.launchpad.net/~sergio-br2/${PORTNAME}/debian-sdl/download/5/${PORTNAME}.1-20140802045408-dd26dik367ztj5xg-8/:manpage
|
MASTER_SITES= https://bazaar.launchpad.net/~sergio-br2/${PORTNAME}/debian-sdl/download/5/${PORTNAME}.1-20140802045408-dd26dik367ztj5xg-8/:manpage
|
||||||
|
@ -13,6 +13,7 @@ EXTRACT_ONLY= ${DISTFILES:N*\:manpage:C/:.*//}
|
||||||
.if !defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX:N*-devel}
|
.if !defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX:N*-devel}
|
||||||
PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
|
PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
|
||||||
PATCHFILES= e33acdc5e922.patch:-p1
|
PATCHFILES= e33acdc5e922.patch:-p1
|
||||||
|
PATCHFILES+= ac0052c6af92.patch:-p1
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
MAINTAINER= jbeich@FreeBSD.org
|
MAINTAINER= jbeich@FreeBSD.org
|
||||||
|
@ -58,7 +59,7 @@ OPTIONS_SLAVE?= SDL
|
||||||
OPTIONS_EXCLUDE:= ${OPTIONS_SINGLE_GUI}
|
OPTIONS_EXCLUDE:= ${OPTIONS_SINGLE_GUI}
|
||||||
|
|
||||||
OLDJOY_DESC= Old joystick support with fixed button mappings (deprecated)
|
OLDJOY_DESC= Old joystick support with fixed button mappings (deprecated)
|
||||||
OLDJOY_EXTRA_PATCHES?= ${PATCHDIR}/extra-patch-old-joy
|
OLDJOY_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-old-joy
|
||||||
QT5_USE= QT5=qmake_build,buildtools_build,linguisttools_build,gui,opengl,widgets
|
QT5_USE= QT5=qmake_build,buildtools_build,linguisttools_build,gui,opengl,widgets
|
||||||
QT5_CMAKE_BOOL= USING_QT_UI
|
QT5_CMAKE_BOOL= USING_QT_UI
|
||||||
QT5_VARS= EXENAME=PPSSPPQt
|
QT5_VARS= EXENAME=PPSSPPQt
|
||||||
|
|
|
@ -15,3 +15,5 @@ SHA256 (Kingcom-tinyformat-Release-2.0.1-7-gb7f5a22_GH0.tar.gz) = d86b5b45920472
|
||||||
SIZE (Kingcom-tinyformat-Release-2.0.1-7-gb7f5a22_GH0.tar.gz) = 22286
|
SIZE (Kingcom-tinyformat-Release-2.0.1-7-gb7f5a22_GH0.tar.gz) = 22286
|
||||||
SHA256 (e33acdc5e922.patch) = 26db4fe256c3947193b379ea7d17b0aae59e4339ae3822b53ef40fd6dca07004
|
SHA256 (e33acdc5e922.patch) = 26db4fe256c3947193b379ea7d17b0aae59e4339ae3822b53ef40fd6dca07004
|
||||||
SIZE (e33acdc5e922.patch) = 1819
|
SIZE (e33acdc5e922.patch) = 1819
|
||||||
|
SHA256 (ac0052c6af92.patch) = 91beb0f70965a433eddb15e1088ab3091beac99e921944fbf79cee16bbb7ee60
|
||||||
|
SIZE (ac0052c6af92.patch) = 3078
|
||||||
|
|
|
@ -7,10 +7,11 @@ https://github.com/hrydgard/ppsspp/commit/182b9e0fdae3
|
||||||
https://github.com/hrydgard/ppsspp/commit/d6b81236626f
|
https://github.com/hrydgard/ppsspp/commit/d6b81236626f
|
||||||
https://github.com/hrydgard/ppsspp/commit/b058b987ad0f
|
https://github.com/hrydgard/ppsspp/commit/b058b987ad0f
|
||||||
https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
||||||
|
https://github.com/hrydgard/ppsspp/commit/ac0052c6af92
|
||||||
|
|
||||||
--- SDL/SDLJoystick.cpp.orig 2017-03-30 12:14:27 UTC
|
--- SDL/SDLJoystick.cpp.orig 2017-10-04 19:26:40 UTC
|
||||||
+++ SDL/SDLJoystick.cpp
|
+++ SDL/SDLJoystick.cpp
|
||||||
@@ -1,12 +1,7 @@
|
@@ -1,13 +1,8 @@
|
||||||
#include "SDL/SDLJoystick.h"
|
#include "SDL/SDLJoystick.h"
|
||||||
#include "Core/Config.h"
|
#include "Core/Config.h"
|
||||||
-#include "Common/FileUtil.h"
|
-#include "Common/FileUtil.h"
|
||||||
|
@ -18,18 +19,20 @@ https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
-#include <string>
|
-#include <string>
|
||||||
-
|
|
||||||
-using namespace std;
|
|
||||||
|
|
||||||
|
-using namespace std;
|
||||||
|
-
|
||||||
static int SDLJoystickEventHandlerWrapper(void* userdata, SDL_Event* event)
|
static int SDLJoystickEventHandlerWrapper(void* userdata, SDL_Event* event)
|
||||||
{
|
{
|
||||||
@@ -17,65 +12,32 @@ static int SDLJoystickEventHandlerWrappe
|
static_cast<SDLJoystick *>(userdata)->ProcessInput(*event);
|
||||||
|
@@ -17,79 +12,30 @@ static int SDLJoystickEventHandlerWrapper(void* userda
|
||||||
SDLJoystick::SDLJoystick(bool init_SDL ) : registeredAsEventHandler(false) {
|
SDLJoystick::SDLJoystick(bool init_SDL ) : registeredAsEventHandler(false) {
|
||||||
SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1");
|
SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1");
|
||||||
if (init_SDL) {
|
if (init_SDL) {
|
||||||
- SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER);
|
- SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER);
|
||||||
- }
|
+ SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO);
|
||||||
-
|
}
|
||||||
|
|
||||||
- const char *dbPath = "gamecontrollerdb.txt";
|
- const char *dbPath = "gamecontrollerdb.txt";
|
||||||
- cout << "loading control pad mappings from " << dbPath << ": ";
|
- cout << "loading control pad mappings from " << dbPath << ": ";
|
||||||
-
|
-
|
||||||
|
@ -44,52 +47,63 @@ https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
||||||
- delete[] mappingData;
|
- delete[] mappingData;
|
||||||
- } else {
|
- } else {
|
||||||
- cout << "gamecontrollerdb.txt missing" << endl;
|
- cout << "gamecontrollerdb.txt missing" << endl;
|
||||||
+ SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO);
|
- }
|
||||||
}
|
|
||||||
- cout << "SUCCESS!" << endl;
|
- cout << "SUCCESS!" << endl;
|
||||||
- setUpControllers();
|
- setUpControllers();
|
||||||
-}
|
-}
|
||||||
|
-
|
||||||
-void SDLJoystick::setUpControllers() {
|
-void SDLJoystick::setUpControllers() {
|
||||||
int numjoys = SDL_NumJoysticks();
|
int numjoys = SDL_NumJoysticks();
|
||||||
+ SDL_JoystickEventState(SDL_ENABLE);
|
+ SDL_JoystickEventState(SDL_ENABLE);
|
||||||
for (int i = 0; i < numjoys; i++) {
|
for (int i = 0; i < numjoys; i++) {
|
||||||
- setUpController(i);
|
- setUpController(i);
|
||||||
- }
|
|
||||||
- if (controllers.size() > 0) {
|
|
||||||
- cout << "pad 1 has been assigned to control pad: " << SDL_GameControllerName(controllers.front()) << endl;
|
|
||||||
+ joys.push_back(SDL_JoystickOpen(i));
|
+ joys.push_back(SDL_JoystickOpen(i));
|
||||||
+// printf("Initialized joystick %d: %s",i,SDL_JoystickNameForIndex(i));
|
+// printf("Initialized joystick %d: %s",i,SDL_JoystickNameForIndex(i));
|
||||||
+ if(strstr(SDL_JoystickNameForIndex(i),"PLAYSTATION(R)3 Controller"))
|
+ if(strstr(SDL_JoystickNameForIndex(i),"PLAYSTATION(R)3 Controller"))
|
||||||
+ g_Config.bPS3Controller = true;
|
+ g_Config.bPS3Controller = true;
|
||||||
}
|
}
|
||||||
|
- if (controllers.size() > 0) {
|
||||||
|
- cout << "pad 1 has been assigned to control pad: " << SDL_GameControllerName(controllers.front()) << endl;
|
||||||
|
- }
|
||||||
-}
|
-}
|
||||||
|
|
||||||
-void SDLJoystick::setUpController(int deviceIndex) {
|
-void SDLJoystick::setUpController(int deviceIndex) {
|
||||||
- if (SDL_IsGameController(deviceIndex)) {
|
- if (!SDL_IsGameController(deviceIndex)) {
|
||||||
- SDL_GameController *controller = SDL_GameControllerOpen(deviceIndex);
|
- cout << "Control pad device " << deviceIndex << " not supported by SDL game controller database, attempting to create default mapping..." << endl;
|
||||||
- if (controller) {
|
- int cbGUID = 33;
|
||||||
- if (SDL_GameControllerGetAttached(controller)) {
|
- char pszGUID[cbGUID];
|
||||||
- controllers.push_back(controller);
|
- SDL_Joystick* joystick = SDL_JoystickOpen(deviceIndex);
|
||||||
- controllerDeviceMap[SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(controller))] = deviceIndex;
|
- SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick), pszGUID, cbGUID);
|
||||||
- cout << "found control pad: " << SDL_GameControllerName(controller) << ", loading mapping: ";
|
- // create default mapping - this is the PS3 dual shock mapping
|
||||||
- auto mapping = SDL_GameControllerMapping(controller);
|
- std::string mapping = string(pszGUID) + "," + string(SDL_JoystickName(joystick)) + ",x:b3,a:b0,b:b1,y:b2,back:b8,guide:b10,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:a5,leftstick:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4";
|
||||||
- if (mapping == NULL) {
|
- if (SDL_GameControllerAddMapping(mapping.c_str()) == 1){
|
||||||
- cout << "FAILED" << endl;
|
- cout << "Added default mapping ok" << endl;
|
||||||
- } else {
|
- } else {
|
||||||
- cout << "SUCCESS, mapping is:" << endl << mapping << endl;
|
- cout << "Failed to add default mapping" << endl;
|
||||||
- }
|
- }
|
||||||
|
- SDL_JoystickClose(joystick);
|
||||||
|
- }
|
||||||
|
- SDL_GameController *controller = SDL_GameControllerOpen(deviceIndex);
|
||||||
|
- if (controller) {
|
||||||
|
- if (SDL_GameControllerGetAttached(controller)) {
|
||||||
|
- controllers.push_back(controller);
|
||||||
|
- controllerDeviceMap[SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(controller))] = deviceIndex;
|
||||||
|
- cout << "found control pad: " << SDL_GameControllerName(controller) << ", loading mapping: ";
|
||||||
|
- auto mapping = SDL_GameControllerMapping(controller);
|
||||||
|
- if (mapping == NULL) {
|
||||||
|
- //cout << "FAILED" << endl;
|
||||||
|
- cout << "Could not find mapping in SDL2 controller database" << endl;
|
||||||
- } else {
|
- } else {
|
||||||
- SDL_GameControllerClose(controller);
|
- cout << "SUCCESS, mapping is:" << endl << mapping << endl;
|
||||||
- }
|
- }
|
||||||
|
- } else {
|
||||||
|
- SDL_GameControllerClose(controller);
|
||||||
- }
|
- }
|
||||||
- }
|
- }
|
||||||
+ if (g_Config.bPS3Controller)
|
+ if (g_Config.bPS3Controller)
|
||||||
+ fillMappingPS3();
|
+ fillMappingPS3();
|
||||||
+ else
|
+ else
|
||||||
+ fillMapping();
|
+ fillMapping();
|
||||||
+
|
|
||||||
+
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SDLJoystick::~SDLJoystick() {
|
SDLJoystick::~SDLJoystick() {
|
||||||
|
@ -103,7 +117,7 @@ https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,107 +46,124 @@ void SDLJoystick::registerEventHandler()
|
@@ -98,107 +44,124 @@ void SDLJoystick::registerEventHandler() {
|
||||||
registeredAsEventHandler = true;
|
registeredAsEventHandler = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,7 +295,8 @@ https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
||||||
+ joys[deviceIndex] = SDL_JoystickOpen(deviceIndex);
|
+ joys[deviceIndex] = SDL_JoystickOpen(deviceIndex);
|
||||||
+ SDL_JoystickEventState(SDL_ENABLE);
|
+ SDL_JoystickEventState(SDL_ENABLE);
|
||||||
+ break;
|
+ break;
|
||||||
+ }
|
}
|
||||||
|
- break;
|
||||||
+
|
+
|
||||||
+ case SDL_JOYDEVICEREMOVED:
|
+ case SDL_JOYDEVICEREMOVED:
|
||||||
+ {
|
+ {
|
||||||
|
@ -291,8 +306,7 @@ https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
||||||
+ joys[deviceIndex] = 0;
|
+ joys[deviceIndex] = 0;
|
||||||
+ }
|
+ }
|
||||||
+ break;
|
+ break;
|
||||||
}
|
+ }
|
||||||
- break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,7 +324,7 @@ https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
||||||
- return it->second;
|
- return it->second;
|
||||||
+ return -1;
|
+ return -1;
|
||||||
}
|
}
|
||||||
--- SDL/SDLJoystick.h.orig 2017-03-30 12:14:27 UTC
|
--- SDL/SDLJoystick.h.orig 2017-10-04 19:26:40 UTC
|
||||||
+++ SDL/SDLJoystick.h
|
+++ SDL/SDLJoystick.h
|
||||||
@@ -1,9 +1,11 @@
|
@@ -1,9 +1,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -324,7 +338,7 @@ https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
||||||
#include "SDL_thread.h"
|
#include "SDL_thread.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -21,11 +23,119 @@ public:
|
@@ -21,11 +23,119 @@ class SDLJoystick{ (public)
|
||||||
void ProcessInput(SDL_Event &event);
|
void ProcessInput(SDL_Event &event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -450,9 +464,9 @@ https://github.com/hrydgard/ppsspp/commit/1b699363ca4d
|
||||||
+
|
+
|
||||||
+ int getDeviceIndex(int instanceId);
|
+ int getDeviceIndex(int instanceId);
|
||||||
};
|
};
|
||||||
--- ext/native/base/PCMain.cpp.orig 2017-03-30 12:14:27 UTC
|
--- ext/native/base/PCMain.cpp.orig 2017-10-04 19:26:40 UTC
|
||||||
+++ ext/native/base/PCMain.cpp
|
+++ ext/native/base/PCMain.cpp
|
||||||
@@ -399,7 +399,7 @@ int main(int argc, char *argv[]) {
|
@@ -428,7 +428,7 @@ int main(int argc, char *argv[]) {
|
||||||
NativeGetAppInfo(&app_name, &app_name_nice, &landscape, &version);
|
NativeGetAppInfo(&app_name, &app_name_nice, &landscape, &version);
|
||||||
|
|
||||||
bool joystick_enabled = true;
|
bool joystick_enabled = true;
|
||||||
|
|
Loading…
Add table
Reference in a new issue