Beispiel #1
0
void set_focus_client(client_t *client)
{
    xcb_void_cookie_t c = xcb_set_input_focus_checked(wm_conf.connection, 
                                                      XCB_INPUT_FOCUS_POINTER_ROOT,
                                                      client->window,
                                                      XCB_CURRENT_TIME);
    xcb_generic_error_t *e = xcb_request_check(wm_conf.connection, c);
    if (e) {
        fprintf(stderr, "xcb_set_input_focus_checked error: %s\n", 
                xcb_event_get_error_label(e->error_code));
        free(e);
    }
}
Beispiel #2
0
/** \brief awesome xerror function.
 * There's no way to check accesses to destroyed windows, thus those cases are
 * ignored (especially on UnmapNotify's).
 * \param e The error event.
 */
static void
xerror(xcb_generic_error_t *e)
{
    /* ignore this */
    if(e->error_code == XCB_WINDOW
       || (e->error_code == XCB_MATCH
           && e->major_code == XCB_SET_INPUT_FOCUS)
       || (e->error_code == XCB_VALUE
           && e->major_code == XCB_KILL_CLIENT)
       || (e->error_code == XCB_MATCH
           && e->major_code == XCB_CONFIGURE_WINDOW))
        return;

    warn("X error: request=%s (major %d, minor %d), error=%s (%d)",
         xcb_event_get_request_label(e->major_code),
         e->major_code, e->minor_code,
         xcb_event_get_error_label(e->error_code),
         e->error_code);

    return;
}
Beispiel #3
0
/* Handle a single event executing the handlers within its queue.
 * Prints an event dumb in case of empty queue. */
static void _handle(xcb_generic_event_t *e) {
    uint8_t sendEvent;
    uint16_t seq_num;
    fwm_eq_node_t *next_node;
    uint8_t response_type;
    fwm_eq_head_t *head;
    xcb_generic_error_t *er;

    /* Iterate queued handlers, if any. */
    response_type = XCB_EVENT_RESPONSE_TYPE(e);
    if (response_type) {
        head = _this.evenths_queue[response_type - 2];
        if (head != NULL) {
            next_node = head->first;
            while (next_node != NULL) {
                ((fwm_event_handler_t) (next_node->handler))(e);
                next_node = next_node->next;
            }
        }
    } else {
        /* Or format event if not to be handled. */
        sendEvent = response_type ? 1 : 0;
        seq_num = *((uint16_t *) e + 1);
        switch (response_type) {
            case 0:
                er = (xcb_generic_error_t *) e;
                printf("Error (%s) on sequence number %d.\n",
                        xcb_event_get_error_label(er->error_code), seq_num);
                break;
            default:
                printf("Unhandler event (%s) following seqnum %d.\n",
                        xcb_event_get_label(response_type), seq_num);
                break;
        }
        fflush(stdout);
    }
}
Beispiel #4
0
void print_x_error(xcb_generic_error_t *error)
{
    uint8_t error_code = error->error_code;
    fprintf(stderr, "X error %d: %s\n", error_code, xcb_event_get_error_label(error_code));
}
Beispiel #5
0
void process_error(xcb_generic_event_t *evt)
{
	xcb_request_error_t *e = (xcb_request_error_t *) evt;
	warn("Failed request: %s, %s: %d.\n", xcb_event_get_request_label(e->major_opcode), xcb_event_get_error_label(e->error_code), e->bad_value);
}