struct wl_drag * window_create_drag(struct window *window) { cairo_device_flush (window->display->device); return wl_shell_create_drag(window->display->shell); }
static VALUE cr_device_flush (VALUE self) { cairo_device_flush (_SELF); cr_device_check_status (_SELF); return self; }
static void window_draw_decorations(struct window *window) { cairo_t *cr; cairo_text_extents_t extents; cairo_pattern_t *outline, *bright, *dim; cairo_surface_t *frame; int width, height, shadow_dx = 3, shadow_dy = 3; window_create_surface(window); width = window->allocation.width; height = window->allocation.height; outline = cairo_pattern_create_rgb(0.1, 0.1, 0.1); bright = cairo_pattern_create_rgb(0.8, 0.8, 0.8); dim = cairo_pattern_create_rgb(0.4, 0.4, 0.4); cr = cairo_create(window->cairo_surface); cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); cairo_set_source_rgba(cr, 0, 0, 0, 0); cairo_paint(cr); cairo_set_source_rgba(cr, 0, 0, 0, 0.6); tile_mask(cr, window->display->shadow, shadow_dx, shadow_dy, width, height, window->margin + 10 - shadow_dx, window->margin + 10 - shadow_dy); if (window->keyboard_device) frame = window->display->active_frame; else frame = window->display->inactive_frame; tile_source(cr, frame, 0, 0, width, height, window->margin + 10, window->margin + 50); cairo_set_operator(cr, CAIRO_OPERATOR_OVER); cairo_set_font_size(cr, 14); cairo_text_extents(cr, window->title, &extents); cairo_move_to(cr, (width - extents.width) / 2, 32 - extents.y_bearing); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); cairo_set_line_width (cr, 4); if (window->keyboard_device) cairo_set_source_rgb(cr, 0, 0, 0); else cairo_set_source_rgb(cr, 0.8, 0.8, 0.8); cairo_show_text(cr, window->title); cairo_destroy(cr); cairo_device_flush (window->display->device); }
void display_flush_cairo_device(struct display *display) { cairo_device_flush (display->device); }