Skip to content

2.x: Cairo backends cannot render images #6562

Closed
@QuLogic

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions