static cairo_surface_t * _cairo_os2_surface_map_to_image (void *abstract_surface, const cairo_rectangle_int_t *extents) { cairo_os2_surface_t *surface = (cairo_os2_surface_t *) abstract_surface; DosRequestMutexSem (surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT); /* Increase lend counter */ surface->pixel_array_lend_count++; DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); *image_out = _cairo_surface_create_for_rectangle_int (surface->image_surface, extents); return CAIRO_STATUS_SUCCESS; }
static cairo_image_surface_t * _cairo_skia_surface_map_to_image (void *asurface, const cairo_rectangle_int_t *extents) { cairo_skia_surface_t *surface = (cairo_skia_surface_t *) asurface; surface->bitmap->lockPixels (); /* XXX: Broken! */ if (extents->width < surface->image.width || extents->height < surface->image.height) { return _cairo_surface_create_for_rectangle_int (&surface->image.base, extents); } return cairo_surface_reference (&surface->image.base); }