projects
/
ruby-ecore.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Macro tweaks.
[ruby-ecore.git]
/
src
/
ecore_evas
/
rb_software_x11.c
diff --git
a/src/ecore_evas/rb_software_x11.c
b/src/ecore_evas/rb_software_x11.c
index eae769ff56fb6e56a09ac1be835d22f75531ba3c..055c17e1a357a6c55f0c95de89784e33675a7295 100644
(file)
--- a/
src/ecore_evas/rb_software_x11.c
+++ b/
src/ecore_evas/rb_software_x11.c
@@
-1,5
+1,5
@@
/*
/*
- * $Id: rb_software_x11.c
15 2004-06-20 13:23:07
Z tilman $
+ * $Id: rb_software_x11.c
40 2004-07-25 13:14:34
Z tilman $
*
* Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de)
*
*
* Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de)
*
@@
-20,21
+20,25
@@
#include <ruby.h>
#include <ruby.h>
+#include <Ecore.h>
#include <Ecore_Evas.h>
#include <Ecore_Evas.h>
+#include "../ecore/rb_ecore.h"
+#include "../ecore_x/rb_window.h"
#include "rb_ecore_evas_main.h"
#include "rb_ecore_evas.h"
#include "rb_ecore_evas_main.h"
#include "rb_ecore_evas.h"
-
VALUE cSoftwareX11
;
+
static VALUE windows
;
-static VALUE c_
init (int argc, VALUE *argv, VALUE self
)
+static VALUE c_
new (int argc, VALUE *argv, VALUE klass
)
{
{
- VALUE disp, parent, geom[4];
+ VALUE
self,
disp, parent, geom[4];
Ecore_Evas **ee = NULL;
char *cdisp = NULL;
Ecore_Evas **ee = NULL;
char *cdisp = NULL;
- int i, igeom[4] = {0};
+ int i, igeom[4] = {0
, 0, 0, 0
};
- Data_Get_Struct (self, Ecore_Evas *, ee);
+ self = Data_Make_Struct (klass, Ecore_Evas *,
+ NULL, c_ecore_evas_free, ee);
rb_scan_args (argc, argv, "06", &disp, &parent,
&geom[0], &geom[1], &geom[2], &geom[3]);
rb_scan_args (argc, argv, "06", &disp, &parent,
&geom[0], &geom[1], &geom[2], &geom[3]);
@@
-50,33
+54,45
@@
static VALUE c_init (int argc, VALUE *argv, VALUE self)
igeom[i] = NUM2INT (geom[i]);
}
igeom[i] = NUM2INT (geom[i]);
}
+ ecore_init ();
+ ecore_evas_init ();
+
*ee = ecore_evas_software_x11_new (cdisp, 0,
igeom[0], igeom[1],
igeom[2], igeom[3]);
*ee = ecore_evas_software_x11_new (cdisp, 0,
igeom[0], igeom[1],
igeom[2], igeom[3]);
+ rb_obj_call_init (self, 0, NULL);
+
return self;
}
return self;
}
-static VALUE c_
new (int argc, VALUE *argv, VALUE klass
)
+static VALUE c_
window_get (VALUE self
)
{
{
- VALUE
self
;
- Ecore_
Evas **ee
;
+ VALUE
o
;
+ Ecore_
X_Window w
;
- self = Data_Make_Struct (klass, Ecore_Evas *,
- NULL, c_ecore_evas_free, ee);
+ GET_OBJ (self, Ecore_Evas *, ee);
- rb_obj_call_init (self, argc, argv);
+ if (NIL_P (o = rb_hash_aref (windows, INT2NUM ((long) (ee))))) {
+ w = ecore_evas_software_x11_window_get (*ee);
+ o = TO_ECORE_X_WINDOW (self, w);
+ rb_hash_aset (windows, INT2NUM ((long) ee), o);
+ }
- return
self
;
+ return
o
;
}
void Init_SoftwareX11 (void)
{
}
void Init_SoftwareX11 (void)
{
- cSoftwareX11 = rb_define_class_under (mEvas,
- "SoftwareX11",
- cEcoreEvas);
+ VALUE c;
- rb_define_singleton_method (cSoftwareX11, "new", c_new, -1);
- rb_define_method (cSoftwareX11, "initialize", c_init, -1);
-}
+ rb_require ("ecore_x");
+ c = rb_define_class_under (mEvas, "SoftwareX11", cEcoreEvas);
+
+ rb_define_singleton_method (c, "new", c_new, -1);
+ rb_define_method (c, "window", c_window_get, 0);
+
+ windows = rb_hash_new ();
+ rb_global_variable (&windows);
+}