]> granicus.if.org Git - graphviz/commitdiff
free up surface between mutiple outputs
authorellson <devnull@localhost>
Mon, 26 Jun 2006 18:30:47 +0000 (18:30 +0000)
committerellson <devnull@localhost>
Mon, 26 Jun 2006 18:30:47 +0000 (18:30 +0000)
plugin/pango/gvrender_pango.c

index 261298862d5f21af10e95c0d0cdcb3e6492fe74a..cb0abddaa617168be3223dc27e62a02ee5f1a34b 100644 (file)
@@ -129,7 +129,12 @@ static void cairogen_begin_page(GVJ_t * job)
     fedisableexcept(FE_ALL_EXCEPT);
 #endif
 
-    cr = (cairo_t *) job->surface; /* might be NULL */
+    if (job->external_surface) {
+        cr = (cairo_t *) job->surface;
+       assert(cr);
+
+        cairo_save(cr);
+    }
 
     switch (job->render.id) {
 #ifdef CAIRO_HAS_PNG_FUNCTIONS
@@ -229,8 +234,12 @@ static void cairogen_end_page(GVJ_t * job)
     default:
        break;
     }
-    if (!job->external_surface)
+    if (job->external_surface)
+       cairo_restore(cr);
+    else {
        cairo_destroy(cr);
+       job->surface = NULL;
+    }
 
 #if defined HAVE_FENV_H && defined HAVE_FESETENV && defined HAVE_FEGETENV && defined(HAVE_FEENABLEEXCEPT)
     /* Restore FP environment */