summaryrefslogtreecommitdiffstats
path: root/client/x11/pixels_source.cpp
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2010-02-19 16:48:55 +0100
committerAlexander Larsson <alexl@redhat.com>2010-02-23 22:52:06 +0100
commit295738b453f44f43a941d072290c5e975c3a6cb4 (patch)
tree87a160082a6c8ed13ab657902398ea7f2c11c16a /client/x11/pixels_source.cpp
parent1caa4b65c54e4371fe7f6eeda0a356e70663bb28 (diff)
downloadspice-295738b453f44f43a941d072290c5e975c3a6cb4.tar.gz
spice-295738b453f44f43a941d072290c5e975c3a6cb4.tar.xz
spice-295738b453f44f43a941d072290c5e975c3a6cb4.zip
Remove cairo use in client
Diffstat (limited to 'client/x11/pixels_source.cpp')
-rw-r--r--client/x11/pixels_source.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/client/x11/pixels_source.cpp b/client/x11/pixels_source.cpp
index 7b9ed05f..144c296f 100644
--- a/client/x11/pixels_source.cpp
+++ b/client/x11/pixels_source.cpp
@@ -25,9 +25,9 @@
static void create_image(const PixmapHeader* pixmap, PixelsSource_p& pixels_source,
- cairo_format_t cairo_format)
+ pixman_format_code_t format)
{
- cairo_surface_t* cairo_surf;
+ pixman_image_t *pixman_image;
XImage *image = new XImage;
memset(image, 0, sizeof(*image));
@@ -53,10 +53,11 @@ static void create_image(const PixmapHeader* pixmap, PixelsSource_p& pixels_sour
THROW("init image failed");
}
- cairo_surf = cairo_image_surface_create_for_data(pixmap->data, cairo_format,
- pixmap->width, pixmap->height,
- pixmap->stride);
- if (cairo_surface_status(cairo_surf) != CAIRO_STATUS_SUCCESS) {
+ pixman_image = pixman_image_create_bits(format,
+ pixmap->width, pixmap->height,
+ (uint32_t *)pixmap->data,
+ pixmap->stride);
+ if (pixman_image == NULL) {
THROW("surf create failed");
}
} catch (...) {
@@ -66,7 +67,7 @@ static void create_image(const PixmapHeader* pixmap, PixelsSource_p& pixels_sour
pixels_source.type = PIXELS_SOURCE_TYPE_PIXMAP;
pixels_source.pixmap.x_image = image;
- pixels_source.pixmap.cairo_surf = cairo_surf;
+ pixels_source.pixmap.pixman_image = pixman_image;
}
PixelsSource::PixelsSource()
@@ -85,12 +86,12 @@ ImageFromRes::ImageFromRes(int res_id)
if (!pixmap) {
THROW("no image %d", res_id);
}
- create_image(pixmap, *(PixelsSource_p*)get_opaque(), CAIRO_FORMAT_RGB24);
+ create_image(pixmap, *(PixelsSource_p*)get_opaque(), PIXMAN_x8r8g8b8);
}
ImageFromRes::~ImageFromRes()
{
- cairo_surface_destroy(((PixelsSource_p*)get_opaque())->pixmap.cairo_surf);
+ pixman_image_unref(((PixelsSource_p*)get_opaque())->pixmap.pixman_image);
delete ((PixelsSource_p*)get_opaque())->pixmap.x_image;
}
@@ -109,12 +110,12 @@ AlphaImageFromRes::AlphaImageFromRes(int res_id)
if (!pixmap) {
THROW("no image %d", res_id);
}
- create_image(pixmap, *(PixelsSource_p*)get_opaque(), CAIRO_FORMAT_ARGB32);
+ create_image(pixmap, *(PixelsSource_p*)get_opaque(), PIXMAN_a8r8g8b8);
}
AlphaImageFromRes::~AlphaImageFromRes()
{
- cairo_surface_destroy(((PixelsSource_p*)get_opaque())->pixmap.cairo_surf);
+ pixman_image_unref(((PixelsSource_p*)get_opaque())->pixmap.pixman_image);
delete ((PixelsSource_p*)get_opaque())->pixmap.x_image;
}