From: Ben Pfaff Date: Fri, 10 Jan 2020 05:53:54 +0000 (+0000) Subject: psppire-output-window: Avoid calling gdk_window_begin_draw_frame twice. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5144f3be8f6220bc40613322e1e213e3093acadd;p=pspp psppire-output-window: Avoid calling gdk_window_begin_draw_frame twice. gdk_window_begin_draw_frame() and gdk_window_end_draw_frame() have to be paired and not recursive, but this code didn't honor that. Thanks to Harry Thijssen and John Darrington for pointing out the issue. --- diff --git a/src/ui/gui/psppire-output-view.c b/src/ui/gui/psppire-output-view.c index b90c7d7637..b7d2c2074c 100644 --- a/src/ui/gui/psppire-output-view.c +++ b/src/ui/gui/psppire-output-view.c @@ -224,13 +224,14 @@ rerender (struct psppire_output_view *view) if (!view->n_items || ! gdkw) return; + if (view->xr == NULL) + create_xr (view); + GdkWindow *win = gtk_layout_get_bin_window (view->output); cairo_region_t *region = gdk_window_get_visible_region (win); GdkDrawingContext *ctx = gdk_window_begin_draw_frame (win, region); cairo_t *cr = gdk_drawing_context_get_cairo_context (ctx); - if (view->xr == NULL) - create_xr (view); view->y = 0; view->max_width = 0; for (item = view->items; item < &view->items[view->n_items]; item++) @@ -343,13 +344,13 @@ psppire_output_view_put (struct psppire_output_view *view, { view_item->drawing_area = drawing_area = gtk_drawing_area_new (); + if (view->xr == NULL) + create_xr (view); + cairo_region_t *region = gdk_window_get_visible_region (win); GdkDrawingContext *ctx = gdk_window_begin_draw_frame (win, region); cairo_t *cr = gdk_drawing_context_get_cairo_context (ctx); - if (view->xr == NULL) - create_xr (view); - if (view->y > 0) view->y += view->font_height / 2;