static int top_event_handler(glw_t *w, void *opaque, glw_signal_t sig, void *extra) { event_t *e = extra; glw_root_t *gr = opaque; if(sig != GLW_SIGNAL_EVENT_BUBBLE) return 0; if(e->e_type_x == EVENT_KEYDESC) return 0; if(event_is_action(e, ACTION_ENABLE_SCREENSAVER)) { gr->gr_screensaver_force_enable = 1; } else if(event_is_action(e, ACTION_NAV_BACK) || event_is_action(e, ACTION_NAV_FWD) || event_is_action(e, ACTION_HOME) || event_is_action(e, ACTION_PLAYQUEUE) || event_is_action(e, ACTION_RELOAD_DATA) || event_is_type(e, EVENT_OPENURL)) { prop_t *p = prop_get_by_name(PNVEC("nav", "eventsink"), 0, PROP_TAG_ROOT, gr->gr_prop_nav, NULL); prop_send_ext_event(p, e); prop_ref_dec(p); } else { event_addref(e); event_dispatch(e); } return 1; }
static int top_event_handler(glw_t *w, void *opaque, glw_signal_t sig, void *extra) { event_t *e = extra; glw_root_t *gr = opaque; if(sig != GLW_SIGNAL_EVENT_BUBBLE) return 0; if(e->e_type_x == EVENT_KEYDESC) return 0; if(event_is_action(e, ACTION_ENABLE_SCREENSAVER)) { gr->gr_screensaver_force_enable = 1; } else { event_addref(e); event_dispatch(e); } return 1; }
static void handle_btn(glw_ps3_t *gp, int pad, int code, int pressed, int sel, int pre) { if(gp->button_assign == 0) { // Swap X and O if(code == BTN_CROSS) code = BTN_CIRCLE; else if(code == BTN_CIRCLE) code = BTN_CROSS; } int16_t *store = &button_counter[pad][code]; int rate = KEY_REPEAT_RATE; int xrep = 0; if(code == 0) return; if(pressed) { if(pre > 200 && *store > KEY_REPEAT_DELAY) xrep = 1; if(pre > 150) rate = 1; else if(pre > 100) rate = 2; if(*store == 0 || (*store > KEY_REPEAT_DELAY && (*store % rate == 0))) { int uc = 0; event_t *e = NULL; if(code >= BTN_KEY_1 && code <= BTN_KEY_9) { uc = code - BTN_KEY_1 + '1'; } else if(code == BTN_KEY_0) { uc = '0'; } if(uc != 0) e = event_create_int(EVENT_UNICODE, uc); if(e == NULL) { const action_type_t *avec = sel ? btn_to_action_sel[code] : btn_to_action[code]; if(avec) { int i = 0; while(avec[i] != 0) i++; e = event_create_action_multi(avec, i); } } if(e != NULL) { e->e_flags |= EVENT_KEYPRESS; event_addref(e); event_to_ui(e); if(xrep) { event_addref(e); event_to_ui(e); } event_release(e); } } (*store)++; } else { *store = 0; } }