diff --git a/lib/matplotlib/backends/backend_gtk3agg.py b/lib/matplotlib/backends/backend_gtk3agg.py index 0a481c773416..c3eb1da68be3 100644 --- a/lib/matplotlib/backends/backend_gtk3agg.py +++ b/lib/matplotlib/backends/backend_gtk3agg.py @@ -46,6 +46,12 @@ def on_draw_event(self, widget, ctx): else: bbox_queue = self._bbox_queue + if HAS_CAIRO_CFFI: + ctx = cairo.Context._from_pointer( + cairo.ffi.cast('cairo_t **', + id(ctx) + object.__basicsize__)[0], + incref=True) + for bbox in bbox_queue: area = self.copy_from_bbox(bbox) buf = np.fromstring(area.to_string_argb(), dtype='uint8') @@ -56,10 +62,6 @@ def on_draw_event(self, widget, ctx): height = int(bbox.y1) - int(bbox.y0) if HAS_CAIRO_CFFI: - ctx = cairo.Context._from_pointer( - cairo.ffi.cast('cairo_t **', - id(ctx) + object.__basicsize__)[0], - incref=True) image = cairo.ImageSurface.create_for_data( buf.data, cairo.FORMAT_ARGB32, width, height) else: