From f73c9d1ed87c23a770f7bf8d155d6d0c49151b31 Mon Sep 17 00:00:00 2001 From: Timo Vanwynsberghe Date: Fri, 14 Feb 2014 15:01:40 +0100 Subject: [PATCH] GTK3Agg backend: Only convert the cairo context to a cairocffi context once. --- lib/matplotlib/backends/backend_gtk3agg.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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: