aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authorretro-wertz2019-03-07 17:50:31 +0800
committerretro-wertz2019-03-07 17:50:31 +0800
commit79f29e0a90de800f4dc8b07c4ff4957e6ed6e7f3 (patch)
tree2b085db43f168394bcd4f4ccf7cb092d91666472 /frontend
parent958c9818cc58f37048e80c99e711f619fc84de3c (diff)
downloadpcsx_rearmed-79f29e0a90de800f4dc8b07c4ff4957e6ed6e7f3.tar.gz
pcsx_rearmed-79f29e0a90de800f4dc8b07c4ff4957e6ed6e7f3.tar.bz2
pcsx_rearmed-79f29e0a90de800f4dc8b07c4ff4957e6ed6e7f3.zip
Fix detection for rumble interface
Diffstat (limited to 'frontend')
-rw-r--r--frontend/libretro.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/frontend/libretro.c b/frontend/libretro.c
index 7fa63cb..5e5d88c 100644
--- a/frontend/libretro.c
+++ b/frontend/libretro.c
@@ -57,7 +57,7 @@ static retro_input_poll_t input_poll_cb;
static retro_input_state_t input_state_cb;
static retro_environment_t environ_cb;
static retro_audio_sample_batch_t audio_batch_cb;
-static struct retro_rumble_interface rumble;
+static retro_set_rumble_state_t rumble_cb;
static struct retro_log_callback logging;
static retro_log_printf_t log_cb;
@@ -430,10 +430,13 @@ void pl_timing_prepare(int is_pal)
void plat_trigger_vibrate(int pad, int low, int high)
{
- if(in_enable_vibration)
+ if (!rumble_cb)
+ return;
+
+ if (in_enable_vibration)
{
- rumble.set_rumble_state(pad, RETRO_RUMBLE_STRONG, high << 8);
- rumble.set_rumble_state(pad, RETRO_RUMBLE_WEAK, low ? 0xffff : 0x0);
+ rumble_cb(pad, RETRO_RUMBLE_STRONG, high << 8);
+ rumble_cb(pad, RETRO_RUMBLE_WEAK, low ? 0xffff : 0x0);
}
}
@@ -1883,6 +1886,7 @@ static int init_memcards(void)
void retro_init(void)
{
+ struct retro_rumble_interface rumble;
const char *bios[] = {
"SCPH101", "SCPH7001", "SCPH5501", "SCPH1001",
"scph101", "scph7001", "scph5501", "scph1001"
@@ -1962,7 +1966,10 @@ void retro_init(void)
environ_cb(RETRO_ENVIRONMENT_GET_CAN_DUPE, &vout_can_dupe);
environ_cb(RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE, &disk_control);
- environ_cb(RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE, &rumble);
+
+ rumble_cb = NULL;
+ if (environ_cb(RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE, &rumble))
+ rumble_cb = rumble.set_rumble_state;
/* Set how much slower PSX CPU runs * 100 (so that 200 is 2 times)
* we have to do this because cache misses and some IO penalties