I don't know how kosher passing `self` is here, but we need someway to access self in the callback. The `closure` argument to `cairo_svg_surface_create_for_stream` looks like its sole purpose is to pass state to the callback, so passing self seems fine in that regard. I just don't know if it violates some ruby c extension contract I'm unaware of.