X-Git-Url: http://git.code-monkey.de/?p=ruby-evas.git;a=blobdiff_plain;f=src%2Frb_evas.c;h=f1b433fdba21e75567c79d9ae44c668c082933fa;hp=96d26de1713dbd0196f9e3f73f4e97ab8252f075;hb=ff457c57c3ac469622c2fcd6bf9e66a55c1df678;hpb=ab841e74c1011d7fdc2e793aae70578957a5bcc6 diff --git a/src/rb_evas.c b/src/rb_evas.c index 96d26de..f1b433f 100644 --- a/src/rb_evas.c +++ b/src/rb_evas.c @@ -1,5 +1,5 @@ /* - * $Id: rb_evas.c 283 2005-03-15 17:59:03Z tilman $ + * $Id: rb_evas.c 354 2006-02-10 18:14:08Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -34,21 +34,27 @@ static void c_mark (RbEvas *e) rb_gc_mark (e->parent); } +static VALUE c_alloc (VALUE klass) +{ + RbEvas *evas = NULL; + + return Data_Make_Struct (cEvas, RbEvas, c_mark, free, evas); +} + VALUE TO_EVAS (VALUE parent, Evas *e) { VALUE self; - RbEvas *evas = NULL; if (NIL_P (parent) || !e) return Qnil; - self = Data_Make_Struct (cEvas, RbEvas, - c_mark, free, evas); + self = rb_class_new_instance (0, NULL, cEvas); + + GET_OBJ (self, RbEvas, evas); + evas->real = e; evas->parent = parent; - rb_obj_call_init (self, 0, NULL); - return self; } @@ -329,6 +335,8 @@ void Init_Evas (void) { cEvas = rb_define_class_under (mEvas, "Evas", rb_cObject); + rb_define_alloc_func (cEvas, c_alloc); + /* not publically instantiable yet */ rb_define_private_method (rb_singleton_class (cEvas), "new", NULL, 0);