Hi, I'm writing on a video procession system. In this i have a C extension, which creates ruby objects that encapsulate images. This objects are passed with some ruby code to an other C extension which shall store them for later output. My problem is, that the GC destroys the objects while they are needed in the future. I've tried to prevent this by calling rb_gc_register_address (&myobject); on the object and after i'm done with the object rb_gc_unregister_address (&myobject); But that seems to be ignorred. Any hints about this? TIA detlef
on 2007-07-29 14:44
on 2007-07-29 17:23
Detlef Reichl wrote: > rb_gc_register_address (&myobject); > > on the object and after i'm done with the object > > rb_gc_unregister_address (&myobject); > > But that seems to be ignorred. > Are you creating the objects using the Data_Make/Wrap/Get_Struct macros? If so, establish a mark routine that GC can call so you can mark your objects as being still in use by calling the rb_gc_mark function. See Chapter 21 in the Pickaxe.