some quick input code for PC build
[pcsx_rearmed.git] / frontend / plugin_lib.c
index 83ae892..93640c3 100644 (file)
@@ -62,13 +62,7 @@ static void print_cpu_usage(void)
                pl_text_out16(pl_fbdev_w - 28, pl_fbdev_h - 10, "%3d", tick_per_sec);
 }
 
-int pl_fbdev_init(void)
-{
-       pl_fbdev_buf = vout_fbdev_flip(layer_fb);
-       return 0;
-}
-
-int pl_fbdev_set_mode(int w, int h, int bpp)
+void *pl_fbdev_set_mode(int w, int h, int bpp)
 {
        void *ret;
 
@@ -86,23 +80,37 @@ int pl_fbdev_set_mode(int w, int h, int bpp)
        else
                pl_fbdev_buf = ret;
 
-       menu_notify_mode_change(w, h);
+       menu_notify_mode_change(w, h, bpp);
 
-       return (ret != NULL) ? 0 : -1;
+       return pl_fbdev_buf;
 }
 
-void pl_fbdev_flip(void)
+void *pl_fbdev_flip(void)
 {
        flip_cnt++;
-       print_fps();
-       print_cpu_usage();
+
+       if (pl_fbdev_buf != NULL) {
+               if (g_opts & OPT_SHOWFPS)
+                       print_fps();
+               if (g_opts & OPT_SHOWCPU)
+                       print_cpu_usage();
+       }
 
        // let's flip now
        pl_fbdev_buf = vout_fbdev_flip(layer_fb);
+       return pl_fbdev_buf;
 }
 
-void pl_fbdev_finish(void)
+int pl_fbdev_open(void)
 {
+       pl_fbdev_buf = vout_fbdev_flip(layer_fb);
+       omap_enable_layer(1);
+       return 0;
+}
+
+void pl_fbdev_close(void)
+{
+       omap_enable_layer(0);
 }
 
 static void update_input(void)
@@ -113,6 +121,11 @@ static void update_input(void)
        if (actions[IN_BINDTYPE_EMU] & PEV_MENU)
                stop = 1;
        keystate = actions[IN_BINDTYPE_PLAYER12];
+
+#ifdef X11
+       extern void x11_update_keys(void);
+       x11_update_keys();
+#endif
 }
 
 /* called on every vsync */
@@ -132,8 +145,9 @@ void pl_frame_limit(void)
        if (tv.tv_sec != oldsec) {
                flips_per_sec = flip_cnt;
                flip_cnt = 0;
-               tick_per_sec = get_cpu_ticks();
                oldsec = tv.tv_sec;
+               if (g_opts & OPT_SHOWCPU)
+                       tick_per_sec = get_cpu_ticks();
        }
 #ifdef PCNT
        static int ya_vsync_count;
@@ -184,3 +198,22 @@ void pl_text_out16(int x, int y, const char *texto, ...)
        pl_text_out16_(x, y, buffer);
 }
 
+static void pl_get_layer_pos(int *x, int *y, int *w, int *h)
+{
+       *x = g_layer_x;
+       *y = g_layer_y;
+       *w = g_layer_w;
+       *h = g_layer_h;
+}
+
+extern int UseFrameSkip; // hmh
+
+const struct rearmed_cbs pl_rearmed_cbs = {
+       pl_get_layer_pos,
+       pl_fbdev_open,
+       pl_fbdev_set_mode,
+       pl_fbdev_flip,
+       pl_fbdev_close,
+       &UseFrameSkip,
+};
+