wxRuby + rcairo ... are driving me mad

How is it possible to use Wx::GraphicsContext#get_native_context with
rcairo? Let me quote the wxRuby documentation from

http://wxruby.rubyforge.org/doc/graphicscontext.html#GraphicsContext_getnativecontext

“Returns the native context (CGContextRef for Core Graphics, Graphics
pointer for GDIPlus and cairo_t pointer for cairo).” [1]

Is there a way to cast the data the cairo_t pointer points to into a
Cairo::Context? Everything I tried resulted in an ‘called on
terminated object’ error. Well, at least the reasonable attempts.

— snip ---------------------------------------------------------

#!/usr/bin/env ruby

require ‘rubygems’
require ‘wx’

require ‘cairo’

include Wx

class MyCanvas < Window
def initialize(parent)
super(parent)
timer = Timer.new(self, 1000)
evt_paint do
paint do |dc|
puts “painting on #{dc}”
gdc = GraphicsContext.create(dc)
# whatever I do with the native context, I get
# method ‘…’ called on terminated object
gdc.get_native_context
end
end
evt_timer(1000, :refresh)
timer.start(100)
end
end

class MyFrame < Frame
def initialize
super(nil, -1, ‘MyTitle’, :style => DEFAULT_FRAME_STYLE)
canvas = MyCanvas.new(self)
end
end

class MyApp < App
def on_init
frame = MyFrame.new
frame.show(true)
end
end

myapp = MyApp.new
myapp.main_loop

— snip ---------------------------------------------------------

Any help is highly appreciated
Best phil

Philipp H. wrote:

terminated object’ error. Well, at least the reasonable attempts.
I suggest you post this on the wxRuby list.

I don’t know of anyone who’s tried to do this. If it doesn’t work at the
moment, it should be pretty easy to get a Integer corresponding to a C
pointer out of the wrapper. But we’d need to know a bit more about what
the Cairo wrapping expects.

a