Index: gtkhid-cairo.c =================================================================== --- gtkhid-cairo.c (revision 8343) +++ gtkhid-cairo.c (revision 8344) @@ -116,6 +116,9 @@ static void cr_draw_line(cairo_t * cr, int fill, double x1, int y1, int x2, int y2) { + if (cr == NULL) + return; + cairo_move_to(cr, x1, y1); cairo_line_to(cr, x2, y2); if (fill) @@ -616,6 +619,9 @@ { render_priv_t *priv = gport->render_priv; + if (priv->cr == NULL) + return; + switch (style) { case Trace_Cap: case Round_Cap: @@ -636,6 +642,9 @@ { render_priv_t *priv = gport->render_priv; + if (priv->cr == NULL) + return; + //gc->width = width; //if (gc->gc) // gdk_gc_set_line_attributes(WHICH_GC(gc), Vz(gc->width), GDK_LINE_SOLID, (GdkCapStyle) gc->cap, (GdkJoinStyle) gc->join); @@ -747,6 +756,9 @@ gint w, h, lw; render_priv_t *priv = gport->render_priv; + if (priv->cr == NULL) + return; + lw = gc->width; w = gport->view.canvas_width * gport->view.coord_per_px; h = gport->view.canvas_height * gport->view.coord_per_px; @@ -784,6 +796,9 @@ gint w, h, vr; render_priv_t *priv = gport->render_priv; + if (priv->cr == NULL) + return; + w = gport->view.canvas_width * gport->view.coord_per_px; h = gport->view.canvas_height * gport->view.coord_per_px; if (SIDE_X(cx) < gport->view.x0 - radius @@ -802,6 +817,10 @@ static int npoints = 0; int i; render_priv_t *priv = gport->render_priv; + + if (priv->cr == NULL) + return; + USE_GC(gc); if (npoints < n_coords) { @@ -821,6 +840,9 @@ gint w, h, lw, xx, yy; render_priv_t *priv = gport->render_priv; + if (priv->cr == NULL) + return; + lw = gc->width; w = gport->view.canvas_width * gport->view.coord_per_px; h = gport->view.canvas_height * gport->view.coord_per_px; @@ -1189,6 +1211,7 @@ GHidPort *port = vport; /* Init any GC's required */ port->render_priv = g_new0(render_priv_t, 1); + port->render_priv->cr = NULL; } static void ghid_cairo_shutdown_renderer(void *vport) @@ -1197,6 +1220,7 @@ render_priv_t *priv = port->render_priv; cairo_destroy(priv->cr); + priv->cr = NULL; cairo_surface_destroy(priv->cr_surf_window); g_free(port->render_priv);