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;
}
Пример #2
0
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);
}