summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2010-02-18 20:42:58 +0100
committerAlexander Larsson <alexl@redhat.com>2010-02-23 22:52:06 +0100
commit7992266ccfb42d4b1242b6b78b80801f511d4b95 (patch)
tree6afaaeb714a39796e2b1eae746ac5390d486e946 /client
parentb5693ca0fc06bfe367770a63395ba01ec18ee3b2 (diff)
downloadspice-7992266ccfb42d4b1242b6b78b80801f511d4b95.tar.gz
spice-7992266ccfb42d4b1242b6b78b80801f511d4b95.tar.xz
spice-7992266ccfb42d4b1242b6b78b80801f511d4b95.zip
Remove cairo_t from cairo canvas
Diffstat (limited to 'client')
-rw-r--r--client/red_cairo_canvas.cpp23
1 files changed, 8 insertions, 15 deletions
diff --git a/client/red_cairo_canvas.cpp b/client/red_cairo_canvas.cpp
index c2496ff4..87023e17 100644
--- a/client/red_cairo_canvas.cpp
+++ b/client/red_cairo_canvas.cpp
@@ -40,9 +40,7 @@ CCanvas::~CCanvas()
void CCanvas::destroy()
{
if (_canvas) {
- cairo_t *cairo = canvas_get_cairo(_canvas);
canvas_destroy(_canvas);
- cairo_destroy(cairo);
_canvas = NULL;
}
destroy_pixmap();
@@ -90,30 +88,25 @@ void CCanvas::copy_pixels(const QRegion& region, RedDrawable* dest_dc, const Pix
void CCanvas::set_mode(int width, int height, int depth, RedWindow *win)
{
- cairo_surface_t *cairo_surface;
- cairo_t *cairo;
+ pixman_image_t *surface;
destroy();
create_pixmap(width, height, win);
- cairo_surface = cairo_image_surface_create_for_data(_pixmap->get_data(), CAIRO_FORMAT_RGB24,
- width, height, _pixmap->get_stride());
- if (cairo_surface_status(cairo_surface) != CAIRO_STATUS_SUCCESS) {
- THROW("create surface failed, %s",
- cairo_status_to_string(cairo_surface_status(cairo_surface)));
+ surface = pixman_image_create_bits(PIXMAN_x8r8g8b8, width, height,
+ (uint32_t *)_pixmap->get_data(),
+ _pixmap->get_stride());
+ if (surface == NULL) {
+ THROW("create surface failed, out of memory");
}
- cairo = cairo_create(cairo_surface);
- cairo_surface_destroy(cairo_surface);
- if (cairo_status(cairo) != CAIRO_STATUS_SUCCESS) {
- THROW("create cairo failed, %s", cairo_status_to_string(cairo_status(cairo)));
- }
- if (!(_canvas = canvas_create(cairo, depth,
+ if (!(_canvas = canvas_create(surface, depth,
&pixmap_cache().base,
&palette_cache().base,
&glz_decoder(),
glz_decode))) {
THROW("create canvas failed");
}
+ pixman_image_unref (surface);
}
void CCanvas::set_access_params(unsigned long base, unsigned long max)