Lines Matching refs:xcb
12 #include <xcb/xcbext.h>
29 fprintf(stderr, "[xcb] Aborting, sorry about that.\n"); \
34 fprintf(stderr, "[xcb] " _message "\n"); \
36 fprintf(stderr, "[xcb] You called XInitThreads, this is not your fault\n"); \
38 fprintf(stderr, "[xcb] Most likely this is a multi-threaded client " \
47 fprintf(stderr, "[xcb] " _message "\n"); \
48 fprintf(stderr, "[xcb] This is most likely caused by a broken X " \
68 /* if we don't own the event queue, we have to ask XCB
70 if(dpy->xcb->event_owner != XlibOwnsEventQueue)
72 if(!xcb_take_socket(dpy->xcb->connection, return_socket, dpy,
77 dpy->xcb->last_flushed = sent;
79 dpy->bufmax = dpy->xcb->real_bufmax;
153 if(dpy->xcb->pending_requests_tail)
155 if (XLIB_SEQUENCE_COMPARE(dpy->xcb->pending_requests_tail->sequence,
160 if (dpy->xcb->pending_requests_tail->next != NULL)
164 dpy->xcb->pending_requests_tail->next = node;
167 dpy->xcb->pending_requests = node;
168 dpy->xcb->pending_requests_tail = node;
174 if (req != dpy->xcb->pending_requests)
179 dpy->xcb->pending_requests = req->next;
180 if(!dpy->xcb->pending_requests)
182 if (req != dpy->xcb->pending_requests_tail)
186 dpy->xcb->pending_requests_tail = NULL;
189 dpy->xcb->pending_requests->sequence))
231 * At most one thread can be reading from XCB's event queue at a time.
256 /* Precondition: This thread can safely get events from XCB. */
257 assert(dpy->xcb->event_owner == XlibOwnsEventQueue && !dpy->xcb->event_waiter);
259 if(!dpy->xcb->next_event) {
261 dpy->xcb->next_event = xcb_poll_for_queued_event(dpy->xcb->connection);
263 dpy->xcb->next_event = xcb_poll_for_event(dpy->xcb->connection);
266 if(dpy->xcb->next_event)
268 PendingRequest *req = dpy->xcb->pending_requests;
269 xcb_generic_event_t *event = dpy->xcb->next_event;
284 dpy->xcb->next_event = NULL;
301 Bool poll_queued_only = dpy->xcb->next_response != NULL;
319 req = dpy->xcb->pending_requests;
328 if(dpy->xcb->next_response)
330 if (((xcb_generic_reply_t*)dpy->xcb->next_response)->response_type == X_Error)
332 error = dpy->xcb->next_response;
337 response = dpy->xcb->next_response;
340 dpy->xcb->next_response = NULL;
349 if(!xcb_poll_for_reply64(dpy->xcb->connection, req->sequence,
364 dpy->xcb->next_response = error ? error : response;
428 if(dpy->xcb->event_owner != XlibOwnsEventQueue)
439 if(!dpy->xcb->event_waiter)
443 if(xcb_connection_has_error(dpy->xcb->connection)) {
462 if(dpy->xcb->event_owner != XlibOwnsEventQueue)
470 if(dpy->xcb->event_waiter)
472 ConditionWait(dpy, dpy->xcb->event_notify);
477 if(!dpy->xcb->next_event)
480 dpy->xcb->event_waiter = 1;
482 event = xcb_wait_for_event(dpy->xcb->connection);
492 dpy->xcb->event_waiter = 0;
493 ConditionBroadcast(dpy, dpy->xcb->event_notify);
499 dpy->xcb->next_event = event;
511 else if(dpy->xcb->pending_requests->reply_waiter)
513 ConditionWait(dpy, dpy->xcb->reply_notify);
526 if(!dpy->xcb->event_waiter)
529 if(xcb_connection_has_error(dpy->xcb->connection))
548 xcb_connection_t *c = dpy->xcb->connection;
559 /* iff we asked XCB to set aside errors, we must pick those up
563 if(dpy->xcb->event_owner != XlibOwnsEventQueue || dpy->async_handlers)
566 for(sequence = dpy->xcb->last_flushed + 1; sequence <= dpy_request; ++sequence)
569 requests = dpy_request - dpy->xcb->last_flushed;
570 dpy->xcb->last_flushed = dpy_request;
618 if (dpy->xcb->next_xid == inval_id)
619 _XAllocIDs(dpy, &dpy->xcb->next_xid, 1);
625 XID ret = dpy->xcb->next_xid;
627 dpy->xcb->next_xid = inval_id;
642 ids[i] = xcb_generate_id(dpy->xcb->connection);
652 if(!force && dpy->xcb->reply_consumed < dpy->xcb->reply_length)
654 free(dpy->xcb->reply_data);
655 dpy->xcb->reply_data = NULL;
667 xcb_connection_t *c = dpy->xcb->connection;
672 if (dpy->xcb->reply_data)
681 if(dpy->xcb->pending_requests_tail
682 && dpy->xcb->pending_requests_tail->sequence == dpy_request)
683 current = dpy->xcb->pending_requests_tail;
691 PendingRequest *req = dpy->xcb->pending_requests;
696 ConditionWait(dpy, dpy->xcb->reply_notify);
713 if(dpy->xcb->event_owner == XlibOwnsEventQueue)
719 if(!dpy->xcb->event_waiter)
727 ConditionBroadcast(dpy, dpy->xcb->reply_notify);
752 if(dpy->xcb->next_event && dpy->xcb->next_event->response_type == X_Error)
754 xcb_generic_event_t *event = dpy->xcb->next_event;
761 dpy->xcb->next_event = NULL;
811 dpy->xcb->reply_data = reply;
812 dpy->xcb->reply_consumed = sizeof(xReply) + (extra * 4);
813 dpy->xcb->reply_length = sizeof(xReply);
814 if(dpy->xcb->reply_data[0] == 1)
815 dpy->xcb->reply_length += (((xcb_generic_reply_t *) dpy->xcb->reply_data)->length * 4);
818 if(dpy->xcb->reply_length < dpy->xcb->reply_consumed)
819 dpy->xcb->reply_consumed = dpy->xcb->reply_length;
821 memcpy(rep, dpy->xcb->reply_data, dpy->xcb->reply_consumed);
831 if(dpy->xcb->reply_data == NULL ||
832 dpy->xcb->reply_consumed + size > dpy->xcb->reply_length)
835 memcpy(data, dpy->xcb->reply_data + dpy->xcb->reply_consumed, size);
836 dpy->xcb->reply_consumed += size;
849 dpy->xcb->reply_consumed += -size & 3;
856 dpy->xcb->reply_consumed += n;
868 if (n < ((INT_MAX - dpy->xcb->reply_consumed) >> 2))
869 dpy->xcb->reply_consumed += (n << 2);
872 dpy->xcb->reply_consumed = dpy->xcb->reply_length;