void cairo_perf_set_thread_aware (cairo_t *cr, cairo_bool_t thread_aware) { #if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV2_SURFACE cairo_device_t *device = cairo_surface_get_device (cairo_get_target (cr)); if (cairo_device_get_type (device) == CAIRO_DEVICE_TYPE_GL) cairo_gl_device_set_thread_aware (device, thread_aware); #endif }
static VALUE cr_device_get_klass (cairo_device_t *device) { VALUE klass; cairo_device_type_t type; type = cairo_device_get_type (device); switch (type) { case CAIRO_DEVICE_TYPE_DRM: klass = rb_cCairo_DRMDevice; break; case CAIRO_DEVICE_TYPE_GL: klass = rb_cCairo_GLDevice; break; case CAIRO_DEVICE_TYPE_SCRIPT: klass = rb_cCairo_ScriptDevice; break; case CAIRO_DEVICE_TYPE_XCB: klass = rb_cCairo_XCBDevice; break; case CAIRO_DEVICE_TYPE_XLIB: klass = rb_cCairo_XlibDevice; break; case CAIRO_DEVICE_TYPE_XML: klass = rb_cCairo_XMLDevice; break; default: klass = rb_cCairo_Device; break; } if (NIL_P (klass)) rb_raise (rb_eArgError, "unknown device type: %d", type); return klass; }