+ flip_cnt++;
+ 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;
+}
+
+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];
+}
+
+/* called on every vsync */
+void pl_frame_limit(void)
+{
+ extern void CheckFrameRate(void);
+ 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;
+ oldsec = tv.tv_sec;
+ if (g_opts & OPT_SHOWCPU)
+ tick_per_sec = get_cpu_ticks();
+ }
+#ifdef PCNT
+ static int ya_vsync_count;
+ if (++ya_vsync_count == PCNT_FRAMES) {
+ pcnt_print(fps_cur);
+ ya_vsync_count = 0;
+ }
+#endif
+
+ CheckFrameRate();
+
+ pcnt_start(PCNT_ALL);