Skip to content

2.x: Cairo backends cannot render images #6562

Description

@QuLogic

In testing #6540, I can see that neither Cairo backend is able to render images correctly.

With GTKCairo:

Traceback (most recent call last):
  File ".../lib/matplotlib/backends/backend_gtk.py", line 438, in expose_event
    self._render_figure(self._pixmap, w, h)
  File ".../lib/matplotlib/backends/backend_gtk.py", line 426, in _render_figure
    self.figure.draw (self._renderer)
  File ".../lib/matplotlib/artist.py", line 63, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File ".../lib/matplotlib/figure.py", line 1129, in draw
    renderer, self, dsu, self.suppressComposite)
  File ".../lib/matplotlib/image.py", line 139, in _draw_list_compositing_images
    a.draw(renderer)
  File ".../lib/matplotlib/artist.py", line 63, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File ".../lib/matplotlib/axes/_base.py", line 2353, in draw
    mimage._draw_list_compositing_images(renderer, self, dsu)
  File ".../lib/matplotlib/image.py", line 163, in _draw_list_compositing_images
    flush_images()
  File ".../lib/matplotlib/image.py", line 147, in flush_images
    image_group[0].draw(renderer)
  File ".../lib/matplotlib/artist.py", line 63, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File ".../lib/matplotlib/image.py", line 464, in draw
    renderer.draw_image(gc, l, b, im)
  File ".../lib/matplotlib/backends/backend_cairo.py", line 180, in draw_image
    im.shape[1]*4)
TypeError: expected a writeable buffer object

With GTK3Cairo:

Traceback (most recent call last):
  File ".../lib/matplotlib/backends/backend_gtk3cairo.py", line 45, in on_draw_event
    self._render_figure(w, h)
  File ".../lib/matplotlib/backends/backend_gtk3cairo.py", line 34, in _render_figure
    self.figure.draw (self._renderer)
  File ".../lib/matplotlib/artist.py", line 63, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File ".../lib/matplotlib/figure.py", line 1129, in draw
    renderer, self, dsu, self.suppressComposite)
  File ".../lib/matplotlib/image.py", line 139, in _draw_list_compositing_images
    a.draw(renderer)
  File ".../lib/matplotlib/artist.py", line 63, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File ".../lib/matplotlib/axes/_base.py", line 2353, in draw
    mimage._draw_list_compositing_images(renderer, self, dsu)
  File ".../lib/matplotlib/image.py", line 163, in _draw_list_compositing_images
    flush_images()
  File ".../lib/matplotlib/image.py", line 147, in flush_images
    image_group[0].draw(renderer)
  File ".../lib/matplotlib/artist.py", line 63, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File ".../lib/matplotlib/image.py", line 464, in draw
    renderer.draw_image(gc, l, b, im)
  File ".../lib/matplotlib/backends/backend_cairo.py", line 180, in draw_image
    im.shape[1]*4)
TypeError: expected a writeable buffer object

Bisect points to 6595139, the backport of #5718.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions