frontend: nub-as-btn option + gamepad fix
authornotaz <notasas@gmail.com>
Mon, 21 Mar 2011 01:15:38 +0000 (03:15 +0200)
committernotaz <notasas@gmail.com>
Mon, 21 Mar 2011 17:25:21 +0000 (19:25 +0200)
frontend/main.c
frontend/menu.c
frontend/pandora.c
frontend/pandora.h
frontend/plat_dummy.c
frontend/plat_omap.c

index 0ed66d5..1030a32 100644 (file)
@@ -291,7 +291,7 @@ int main(int argc, char *argv[])
 
        // frontend stuff
        in_init();
-       in_probe();
+       //in_probe();
        plat_init();
        menu_init();
 
index 0e5550d..546125f 100644 (file)
 #include "plugin.h"
 #include "plugin_lib.h"
 #include "omap.h"
+#include "pandora.h"
 #include "pcnt.h"
 #include "arm_utils.h"
 #include "common/plat.h"
+#include "common/input.h"
+#include "linux/in_evdev.h"
 #include "../libpcsxcore/misc.h"
 #include "../libpcsxcore/cdrom.h"
 #include "../libpcsxcore/psemu_plugin_defs.h"
@@ -136,12 +139,18 @@ static int emu_save_load_game(int load, int unused)
 // propagate menu settings to the emu vars
 static void menu_sync_config(void)
 {
+       static int allow_abs_only_old;
+
        Config.PsxAuto = 1;
        if (region > 0) {
                Config.PsxAuto = 0;
                Config.PsxType = region - 1;
        }
        in_type = in_type_sel ? PSE_PAD_TYPE_ANALOGPAD : PSE_PAD_TYPE_STANDARD;
+       if (in_evdev_allow_abs_only != allow_abs_only_old) {
+               pandora_rescan_inputs();
+               allow_abs_only_old = in_evdev_allow_abs_only;
+       }
 
        pl_frame_interval = Config.PsxType ? 20000 : 16667;
        // used by P.E.Op.S. frameskip code
@@ -156,6 +165,7 @@ static void menu_set_defconfig(void)
 
        region = 0;
        in_type_sel = 0;
+       in_evdev_allow_abs_only = 0;
        Config.Xa = Config.Cdda = Config.Sio =
        Config.SpuIrq = Config.RCntFix = Config.VSyncWA = 0;
 
@@ -227,6 +237,7 @@ static const struct {
        CE_INTVAL_V(iSPUIRQWait, 2),
        CE_INTVAL(iUseTimer),
        CE_INTVAL(warned_about_bios),
+       CE_INTVAL(in_evdev_allow_abs_only),
 };
 
 static char *get_cd_label(void)
@@ -841,6 +852,7 @@ static void keys_load_all(const char *cfg)
                                lprintf("config: unhandled action \"%s\"\n", act);
                }
        }
+       in_clean_binds();
 }
 
 static int key_config_loop_wrap(int id, int keys)
@@ -894,7 +906,17 @@ static int mh_savecfg(int id, int keys)
        return 1;
 }
 
+static int mh_input_rescan(int id, int keys)
+{
+       //menu_sync_config();
+       pandora_rescan_inputs();
+       me_update_msg("rescan complete.");
+
+       return 0;
+}
+
 static const char *men_in_type_sel[] = { "Standard (SCPH-1080)", "Analog (SCPH-1150)", NULL };
+static const char h_nub_btns[] = "Experimental, keep this OFF if unsure. Select rescan after change.";
 
 static menu_entry e_menu_keyconfig[] =
 {
@@ -903,8 +925,10 @@ static menu_entry e_menu_keyconfig[] =
        mee_handler_id("Emulator controls", MA_CTRL_EMU,        key_config_loop_wrap),
        mee_label     (""),
        mee_enum      ("Controller",        0, in_type_sel,     men_in_type_sel),
+       mee_onoff_h   ("Nubs as buttons",   0, in_evdev_allow_abs_only, 1, h_nub_btns),
        mee_cust_nosave("Save global config",       MA_OPT_SAVECFG,      mh_savecfg, mgn_saveloadcfg),
        mee_cust_nosave("Save cfg for loaded game", MA_OPT_SAVECFG_GAME, mh_savecfg, mgn_saveloadcfg),
+       mee_handler   ("Rescan devices",  mh_input_rescan),
        mee_label     (""),
        mee_label     ("Input devices:"),
        mee_label_mk  (MA_CTRL_DEV_FIRST, mgn_dev_name),
index b4e3a42..b82c78a 100644 (file)
@@ -151,8 +151,9 @@ void in_update_analogs(void)
        //printf("%4d %4d %4d %4d\n", in_a1[0], in_a1[1], in_a2[0], in_a2[1]);
 }
 
-int pandora_init(void)
+int pandora_rescan_inputs(void)
 {
+       in_probe();
        in_set_config(in_name_to_id("evdev:gpio-keys"), IN_CFG_KEY_NAMES,
                      pandora_gpio_keys, sizeof(pandora_gpio_keys));
 
index 9bab84f..9274d4d 100644 (file)
@@ -1 +1 @@
-int pandora_init(void);
+int pandora_rescan_inputs(void);
index 6cbe7f8..a43662b 100644 (file)
@@ -54,3 +54,7 @@ void bgr888_to_rgb888(void *d, void *s, int len)
 void in_update_analogs(void)
 {
 }
+
+void pandora_rescan_inputs(void)
+{
+}
index b0490c7..516e06f 100644 (file)
@@ -169,7 +169,9 @@ void plat_init(void)
        }
        g_menubg_ptr = temp_frame;
 
-       pandora_init();
+       // hmh
+       pandora_rescan_inputs();
+
        return;
 
 fail1: