Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
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;
  }
}