- VALUE self, disp, parent, geom[4];
- Ecore_Evas **ee = NULL;
+ c_ecore_evas_mark (&ee->ee);
+
+ if (!NIL_P (ee->parent_window))
+ rb_gc_mark (ee->parent_window);
+
+ if (!NIL_P (ee->window))
+ rb_gc_mark (ee->window);
+}
+
+static void c_free (RbEcoreEvasSoftwareX11 *ee)
+{
+ c_ecore_evas_free (&ee->ee, false);
+
+ free (ee);
+}
+
+static VALUE c_alloc (VALUE klass)
+{
+ RbEcoreEvasSoftwareX11 *ee = NULL;
+
+ ecore_init ();
+ ecore_evas_init ();
+
+ return Data_Make_Struct (klass, RbEcoreEvasSoftwareX11,
+ c_mark, c_free, ee);
+}
+
+/*
+ * call-seq:
+ * Ecore::Evas::SoftwareX11.new([display, parent, x, y, w, h]) => swx11
+ *
+ * Creates an Ecore::Evas::SoftwareX11 object.
+ */
+static VALUE c_init (int argc, VALUE *argv, VALUE self)
+{
+ VALUE disp, parent, geom[4];
+ RbWindow *win = NULL;