r4719 - in trunk/src/host/pye17: ecore_evas examples/ecore_evas

marek at docs.openmoko.org marek at docs.openmoko.org
Fri Oct 17 09:34:57 CEST 2008


Author: marek
Date: 2008-10-17 09:34:57 +0200 (Fri, 17 Oct 2008)
New Revision: 4719

Modified:
   trunk/src/host/pye17/ecore_evas/ecore_evas.override
   trunk/src/host/pye17/examples/ecore_evas/simple_window.py
Log:
[pye17] fix segfault on exit, add software_x11_16 support, and more functionality to sample script


Modified: trunk/src/host/pye17/ecore_evas/ecore_evas.override
===================================================================
--- trunk/src/host/pye17/ecore_evas/ecore_evas.override	2008-10-16 10:28:24 UTC (rev 4718)
+++ trunk/src/host/pye17/ecore_evas/ecore_evas.override	2008-10-17 07:34:57 UTC (rev 4719)
@@ -36,13 +36,51 @@
 
     if(new_self->obj == NULL) {
         Py_DECREF(new_self);
-        PyErr_SetString(PyExc_TypeError, "Can't create ecore_evas object. Check your DISPLAY variable!");
+        PyErr_SetString(PyExc_RuntimeError, "Can't create ecore_evas object. Check your DISPLAY variable!");
         return NULL;
     }
 
     //g_object_ref(new_self->obj);
     //pygobject_register_wrapper_full(new_self, FALSE);
-    PyObject_GC_Track((PyObject *)new_self);
 
+    // makes python segfault on exit - probably necessary for the garbage collector ?!
+    //PyObject_GC_Track((PyObject *)new_self);
+
     return (PyObject*)new_self;
 }
+%%
+define software_x11_16_new kwargs
+static Ecore_Evas *
+_wrap_software_x11_16_new(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "w", "h", NULL };
+    PyGObject *new_self;
+    int w, h;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"ii:software_x11_16_new.__new__", kwlist, &w, &h))
+        return NULL;
+
+    new_self = PyObject_GC_New(PyGObject, &PyEcore_Evas_Type);
+
+    if (new_self == NULL)
+        return NULL;
+
+    new_self->inst_dict = NULL;
+    new_self->weakreflist = NULL;
+    new_self->private_flags.flags = 0;
+    new_self->obj = ecore_evas_software_x11_16_new(NULL, 0, 0, 0, w, h);
+
+    if(new_self->obj == NULL) {
+        Py_DECREF(new_self);
+        PyErr_SetString(PyExc_RuntimeError, "Can't create ecore_evas object. Check your DISPLAY variable!");
+        return NULL;
+    }
+
+    //g_object_ref(new_self->obj);
+    //pygobject_register_wrapper_full(new_self, FALSE);
+
+    // makes python segfault on exit - probably necessary for the garbage collector ?!
+    //PyObject_GC_Track((PyObject *)new_self);
+
+    return (PyObject*)new_self;
+}

Modified: trunk/src/host/pye17/examples/ecore_evas/simple_window.py
===================================================================
--- trunk/src/host/pye17/examples/ecore_evas/simple_window.py	2008-10-16 10:28:24 UTC (rev 4718)
+++ trunk/src/host/pye17/examples/ecore_evas/simple_window.py	2008-10-17 07:34:57 UTC (rev 4719)
@@ -1,8 +1,14 @@
 #!/usr/bin/python
 
-import ecore                                                      
-import ecore_evas                                                 
+import ecore
+import ecore_evas
 
-window = ecore_evas.software_x11_new(500,500)                     
-window.show()                                                     
+try:
+  window = ecore_evas.software_x11_16_new(500,500)
+except:
+  window = ecore_evas.software_x11_new(500,500)
+
+window.title_set("TestWindow")
+window.show()
+
 ecore.ecore_main_loop_begin()




More information about the commitlog mailing list