static void dri3_copy_area(xcb_connection_t *c, xcb_drawable_t src_drawable, xcb_drawable_t dst_drawable, xcb_gcontext_t gc, int16_t src_x, int16_t src_y, int16_t dst_x, int16_t dst_y, uint16_t width, uint16_t height) { xcb_void_cookie_t cookie; cookie = xcb_copy_area_checked(c, src_drawable, dst_drawable, gc, src_x, src_y, dst_x, dst_y, width, height); xcb_discard_reply(c, cookie.sequence); }
BOOL PRESENTHelperCopyFront(Display *dpy, PRESENTPixmapPriv *present_pixmap_priv) { PRESENTpriv *present_priv = present_pixmap_priv->present_priv; xcb_void_cookie_t cookie; xcb_generic_error_t *error; uint32_t v = 0; xcb_gcontext_t gc; pthread_mutex_lock(&present_priv->mutex_present); if (!present_priv->window) { pthread_mutex_unlock(&present_priv->mutex_present); return FALSE; } xcb_create_gc(present_priv->xcb_connection, (gc = xcb_generate_id(present_priv->xcb_connection)), present_priv->window, XCB_GC_GRAPHICS_EXPOSURES, &v); cookie = xcb_copy_area_checked(present_priv->xcb_connection, present_priv->window, present_pixmap_priv->pixmap, gc, 0, 0, 0, 0, present_pixmap_priv->width, present_pixmap_priv->height); error = xcb_request_check(present_priv->xcb_connection, cookie); xcb_free_gc(present_priv->xcb_connection, gc); pthread_mutex_unlock(&present_priv->mutex_present); return (error != NULL); }
static void process_events(xcb_connection_t *c, xcb_gcontext_t g, xcb_window_t w, xcb_pixmap_t p, uint32_t width, uint32_t height) { xcb_generic_event_t *e; xcb_void_cookie_t cookie; while ((e = xcb_wait_for_event(c))) { uint32_t r = XCB_EVENT_RESPONSE_TYPE(e); xcb_generic_error_t *err; fprintf(stderr, "event %d\n", r); switch (r) { case XCB_EXPOSE: case XCB_MAP_NOTIFY: cookie = xcb_copy_area_checked(c, p, w, g, 0, 0, 0, 0, width, height); assert(!xcb_request_check(c, cookie)); break; case XCB_BUTTON_PRESS: exit(0); break; case 0: err = (xcb_generic_error_t *) e; printf("error: %d (sequence %d)\n", err->error_code, (unsigned int) err->full_sequence); exit(1); default: break; } free(e); } }