cairo: Implement xr_driver_destroy() and use it during printing.
authorBen Pfaff <blp@cs.stanford.edu>
Thu, 20 May 2010 14:22:52 +0000 (07:22 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Thu, 20 May 2010 14:22:52 +0000 (07:22 -0700)
This function was omitted by oversight earlier.

src/output/cairo.c
src/ui/gui/psppire-output-window.c

index a1445bcfe1c5b3763797a88ca5ba1b8061b59ced..68c3eb81a0f96e54b9ef89da8dd86b5c41a3c290 100644 (file)
@@ -928,6 +928,18 @@ xr_driver_create (cairo_t *cairo, struct string_map *options)
   return xr;
 }
 
+/* Destroy XR, which should have been created with xr_driver_create().  Any
+   cairo_t added to XR is not destroyed, because it is owned by the client. */
+void
+xr_driver_destroy (struct xr_driver *xr)
+{
+  if (xr != NULL)
+    {
+      xr->cairo = NULL;
+      output_driver_destroy (&xr->driver);
+    }
+}
+
 static struct xr_rendering *
 xr_rendering_create_text (struct xr_driver *xr, const char *text, cairo_t *cr)
 {
index f11b0057f2145a511b03ca09bb85eb3649fe9918..6d1cd46ca0085c82ad5f7f4715c7bc914b92990b 100644 (file)
@@ -685,7 +685,7 @@ end_print (GtkPrintOperation *operation,
           GtkPrintContext   *context,
           PsppireOutputWindow *window)
 {
-  //  xr_driver_destroy (window->print_xrd);
+  xr_driver_destroy (window->print_xrd);
 }