frontend: fix screenshot functionality for pollux
[pcsx_rearmed.git] / frontend / main.c
index c5520cf..aaf1bb0 100644 (file)
 #include "plugin_lib.h"
 #include "pcnt.h"
 #include "menu.h"
+#include "plat.h"
 #include "../libpcsxcore/misc.h"
 #include "../libpcsxcore/new_dynarec/new_dynarec.h"
 #include "../plugins/cdrcimg/cdrcimg.h"
 #include "common/plat.h"
-#include "common/input.h"
 #include "common/readpng.h"
+#include "common/input.h"
+#include "linux/in_evdev.h"
+
+// don't include debug.h - it breaks ARM build (R1 redefined)
+void StartDebugger();
+void StopDebugger();
 
 int ready_to_go;
 unsigned long gpuDisp;
 char cfgfile_basename[MAXPATHLEN];
-static char *(*real_getenv)(const char *name);
 int state_slot;
 enum sched_action emu_action, emu_action_old;
 char hud_msg[64];
@@ -117,6 +122,9 @@ static void set_default_paths(void)
        strcpy(Config.Pad1, "builtin_pad");
        strcpy(Config.Pad2, "builtin_pad");
        strcpy(Config.Net, "Disabled");
+#if defined(__arm__) && !defined(__ARM_ARCH_7A__) /* XXX */
+       strcpy(Config.Gpu, "gpuPCSX4ALL.so");
+#endif
        Config.PsxAuto = 1;
 
        snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "." PATCHES_DIR);
@@ -171,9 +179,14 @@ void do_emu_action(void)
                        state_slot = 9;
                goto do_state_slot;
        case SACTION_TOGGLE_FSKIP:
-               pl_rearmed_cbs.frameskip ^= 1;
-               snprintf(hud_msg, sizeof(hud_msg), "FRAMESKIP %s",
-                       pl_rearmed_cbs.frameskip ? "ON" : "OFF");
+               pl_rearmed_cbs.fskip_advice = 0;
+               pl_rearmed_cbs.frameskip++;
+               if (pl_rearmed_cbs.frameskip > 1)
+                       pl_rearmed_cbs.frameskip = -1;
+               snprintf(hud_msg, sizeof(hud_msg), "FRAMESKIP: %s",
+                       pl_rearmed_cbs.frameskip == -1 ? "AUTO" :
+                       pl_rearmed_cbs.frameskip == 0 ? "OFF" : "1" );
+               plugin_call_rearmed_cbs();
                break;
        case SACTION_SCREENSHOT:
                {
@@ -209,19 +222,6 @@ do_state_slot:
 
 int main(int argc, char *argv[])
 {
-       void *tmp;
-
-       tmp = dlopen("/lib/libdl.so.2", RTLD_LAZY);
-       if (tmp == NULL)
-               tmp = dlopen("/lib32/libdl.so.2", RTLD_LAZY);
-       if (tmp != NULL)
-               real_getenv = dlsym(tmp, "getenv");
-       if (real_getenv == NULL) {
-               fprintf(stderr, "%s\n", dlerror());
-               return 1;
-       }
-       dlclose(tmp);
-
        // what is the name of the config file?
        // it may be redefined by -cfg on the command line
        strcpy(cfgfile_basename, "pcsx.cfg");
@@ -315,10 +315,12 @@ int main(int argc, char *argv[])
 
        // frontend stuff
        in_init();
+       in_evdev_init();
        //in_probe();
        plat_init();
        menu_init(); // loads config
        pl_init();
+       plat_rescan_inputs();
 
        if (psxout)
                Config.PsxOut = 1;
@@ -646,20 +648,6 @@ void ClosePlugins() {
        }
 }
 
-#if 1
-/* this is to avoid having to hack every plugin to stop using $HOME */
-char *getenv(const char *name)
-{
-       static char ret[8] = ".";
-
-       if (name && strcmp(name, "HOME") == 0 &&
-                       ((int)name >> 28) == 0) // HACK: let libs find home
-               return ret;
-
-       return real_getenv(name);
-}
-#endif
-
 /* we hook statically linked plugins here */
 static const char *builtin_plugins[] = {
        "builtin_gpu", "builtin_spu", "builtin_cdr", "builtin_pad",