+ if (in_type1 == PSE_PAD_TYPE_ANALOGPAD)
+ in_update_analogs();
+ emu_act = actions[IN_BINDTYPE_EMU];
+ in_state_gun = (emu_act & SACTION_GUN_MASK) >> SACTION_GUN_TRIGGER;
+
+ emu_act &= ~SACTION_GUN_MASK;
+ if (emu_act) {
+ int which = 0;
+ for (; !(emu_act & 1); emu_act >>= 1, which++)
+ ;
+ emu_act = which;
+ }
+ emu_set_action(emu_act);
+
+ in_keystate = actions[IN_BINDTYPE_PLAYER12];
+
+#ifdef X11
+ extern int x11_update_keys(unsigned int *action);
+ in_keystate |= x11_update_keys(&emu_act);
+ emu_set_action(emu_act);
+#endif
+}
+
+void pl_update_gun(int *xn, int *xres, int *y, int *in)
+{
+ if (ts)
+ pl_gun_ts_update(ts, xn, y, in);
+
+ *xres = pl_fbdev_w;
+ *y = *y * pl_fbdev_h >> 10;
+}
+
+#define MAX_LAG_FRAMES 3
+
+#define tvdiff(tv, tv_old) \
+ ((tv.tv_sec - tv_old.tv_sec) * 1000000 + tv.tv_usec - tv_old.tv_usec)
+// assumes us < 1000000
+#define tvadd(tv, us) { \
+ tv.tv_usec += us; \
+ if (tv.tv_usec >= 1000000) { \
+ tv.tv_usec -= 1000000; \
+ tv.tv_sec++; \
+ } \