File ghostscript-8.61-x11.dif of Package ghostscript-library

--- base/gdevx.c
+++ base/gdevx.c	2007-09-26 10:20:40.086961112 +0000
@@ -1046,27 +1046,41 @@ static void
 update_do_flush(gx_device_X * xdev)
 {
     flush_text(xdev);
+    if (xdev->update.box.q.x == min_int_in_fixed || xdev->update.box.q.y == min_int_in_fixed)
+	return;
+    if (xdev->update.box.p.x == max_int_in_fixed || xdev->update.box.p.y == max_int_in_fixed)
+	return;
     if (xdev->update.count != 0) {
 	int x = xdev->update.box.p.x, y = xdev->update.box.p.y;
 	int w = xdev->update.box.q.x - x, h = xdev->update.box.q.y - y;
+	const gx_device_memory *mdev = NULL;
 
-	fit_fill_xywh(xdev, x, y, w, h);
-	if (w > 0 && h > 0) {
-	    if (xdev->is_buffered) {
-		/* Copy from memory image to X server. */
-		const gx_device_memory *mdev =
-		    (const gx_device_memory *)xdev->target;
+	/*
+	 * Copy from memory image to X server if any.
+	 */
+	if (xdev->is_buffered) {
+	    /*
+	     * The bbox device may have set the target to NULL
+	     * temporarily.  If this is the case, defer the screen
+	     * update.
+	     */
+	    if (!(mdev = (const gx_device_memory *)xdev->target))
+		return;
+	}
+
+	/*
+	 * mdev->width and mdev->height arn't the same as
+	 * xdev->width and xdev->height ... at least for gv
+	 */
+	if (mdev)
+	    fit_fill_xywh(mdev, x, y, w, h);
+	else
+	    fit_fill_xywh(xdev, x, y, w, h);
 
-		/*
-		 * The bbox device may have set the target to NULL
-		 * temporarily.  If this is the case, defer the screen
-		 * update.
-		 */
-		if (mdev == NULL)
-		    return;	/* don't reset */
+	if (w > 0 && h > 0) {
+	    if (mdev)
 		x_copy_image(xdev, mdev->line_ptrs[y], x, mdev->raster,
 			     x, y, w, h);
-	    }
 	    if (xdev->bpixmap) {
 		/* Copy from X backing pixmap to screen. */
 
openSUSE Build Service is sponsored by