[evince] dvi: Add image_done method to DviDevice to notify that the image is finished



commit c565f15e696db4b4cf983cdddf1e1ab273d547dc
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Mon Nov 8 19:06:11 2010 +0100

    dvi: Add image_done method to DviDevice to notify that the image is finished
    
    This way we can mark the surface dirty when all pixels have been
    modified.

 backend/dvi/cairo-device.c    |    7 +++++++
 backend/dvi/mdvi-lib/bitmap.c |    2 ++
 backend/dvi/mdvi-lib/mdvi.h   |    2 ++
 3 files changed, 11 insertions(+), 0 deletions(-)
---
diff --git a/backend/dvi/cairo-device.c b/backend/dvi/cairo-device.c
index 47425ca..51aea37 100644
--- a/backend/dvi/cairo-device.c
+++ b/backend/dvi/cairo-device.c
@@ -260,6 +260,12 @@ dvi_cairo_put_pixel (void *image, int x, int y, Ulong color)
 }
 
 static void
+dvi_cairo_image_done (void *ptr)
+{
+        cairo_surface_mark_dirty((cairo_surface_t *)ptr);
+}
+
+static void
 dvi_cairo_set_color (void *device_data, Ulong fg, Ulong bg)
 {
 	DviCairoDevice *cairo_device = (DviCairoDevice *) device_data;
@@ -280,6 +286,7 @@ mdvi_cairo_device_init (DviDevice *device)
 	device->create_image = dvi_cairo_create_image;
 	device->free_image = dvi_cairo_free_image;
 	device->put_pixel = dvi_cairo_put_pixel;
+        device->image_done = dvi_cairo_image_done;
 	device->set_color = dvi_cairo_set_color;
 #ifdef HAVE_SPECTRE
 	device->draw_ps = dvi_cairo_draw_ps;
diff --git a/backend/dvi/mdvi-lib/bitmap.c b/backend/dvi/mdvi-lib/bitmap.c
index 53f2120..6edec1d 100644
--- a/backend/dvi/mdvi-lib/bitmap.c
+++ b/backend/dvi/mdvi-lib/bitmap.c
@@ -1028,6 +1028,8 @@ void	mdvi_shrink_glyph_grey(DviContext *dvi, DviFont *font,
 		for(x = 0; x < w; x++)
 			dev->put_pixel(image, x, y, pixels[0]);
 	}
+
+        dev->image_done(image);
 	DEBUG((DBG_BITMAPS, "shrink_glyph_grey: (%dw,%dh,%dx,%dy) -> (%dw,%dh,%dx,%dy)\n",
 		glyph->w, glyph->h, glyph->x, glyph->y,
 		dest->w, dest->h, dest->x, dest->y));
diff --git a/backend/dvi/mdvi-lib/mdvi.h b/backend/dvi/mdvi-lib/mdvi.h
index 327e61f..37664a7 100644
--- a/backend/dvi/mdvi-lib/mdvi.h
+++ b/backend/dvi/mdvi-lib/mdvi.h
@@ -99,6 +99,7 @@ typedef void *(*DviCreateImage)	__PROTO((void *device_data,
 				         Uint bpp));
 typedef void (*DviFreeImage)	__PROTO((void *image));
 typedef void (*DviPutPixel)	__PROTO((void *image, int x, int y, Ulong color));
+typedef void (*DviImageDone)    __PROTO((void *image));
 typedef void (*DviDevDestroy)   __PROTO((void *data));
 typedef void (*DviRefresh)      __PROTO((DviContext *dvi, void *device_data));
 typedef void (*DviSetColor)	__PROTO((void *device_data, Ulong, Ulong));
@@ -114,6 +115,7 @@ struct _DviDevice {
 	DviCreateImage	create_image;
 	DviFreeImage	free_image;
 	DviPutPixel	put_pixel;
+        DviImageDone    image_done;
 	DviDevDestroy	dev_destroy;
 	DviRefresh	refresh;
 	DviSetColor	set_color;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]