#include "common/fonts.h"
#include "common/input.h"
#include "omap.h"
+#include "menu.h"
#include "pcnt.h"
#include "../libpcsxcore/new_dynarec/new_dynarec.h"
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;
else
pl_fbdev_buf = ret;
- return (ret != NULL) ? 0 : -1;
+ menu_notify_mode_change(w, h, bpp);
+
+ return pl_fbdev_buf;
}
-void pl_fbdev_flip(void)
+void *pl_fbdev_flip(void)
{
- /* doing input here because the pad is polled
- * thousands of times for some reason */
- int actions[IN_BINDTYPE_COUNT] = { 0, };
-
- in_update(actions);
- if (actions[IN_BINDTYPE_EMU] & PEV_MENU)
- stop = 1;
- keystate = actions[IN_BINDTYPE_PLAYER12];
-
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)
+{
+ int actions[IN_BINDTYPE_COUNT] = { 0, };
+
+ in_update(actions);
+ 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 */
static int oldsec;
struct timeval tv;
+ /* doing input here because the pad is polled
+ * thousands of times per frame for some reason */
+ update_input();
+
pcnt_end(PCNT_ALL);
gettimeofday(&tv, 0);
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;
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,
+};
+