Updating branch refs/heads/master
         to d458474c1ab9da75e2bdb9029fbb7c5456714a8d (commit)
       from e72abc48093bcbae4807846ff5c89db0ba4dbe88 (commit)

commit d458474c1ab9da75e2bdb9029fbb7c5456714a8d
Author: Adam Plumb <adampl...@gmail.com>
Date:   Sat Mar 12 10:43:02 2011 -0500

    Add support for importing pygtk as a PyCapsule.  Some distributions with 
python 2.7+ will require this

 src/thunarx-python.c |   32 +++++++++++++++++++++-----------
 1 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/src/thunarx-python.c b/src/thunarx-python.c
index e9b35a2..3133511 100644
--- a/src/thunarx-python.c
+++ b/src/thunarx-python.c
@@ -82,20 +82,30 @@ thunarx_python_init_pygtk(void)
     PyObject *pygtk = PyImport_ImportModule("gtk._gtk");
     if (pygtk != NULL)
     {
-               PyObject *module_dict = PyModule_GetDict(pygtk);
-               PyObject *cobject = PyDict_GetItemString(module_dict, 
"_PyGtk_API");
-               if (PyCObject_Check(cobject))
+#ifdef Py_CAPSULE_H
+               void *capsule = PyCapsule_Import("gtk._gtk._PyGtk_API", 0);
+               if (capsule)
                {
-                       _PyGtk_API = (struct _PyGtk_FunctionStruct*)
-                               PyCObject_AsVoidPtr(cobject);
+                       _PyGtk_API = (struct _PyGtk_FunctionStruct*)capsule;
                }
-               else
+#endif
+               if (!_PyGtk_API)
                {
-            PyErr_SetString(PyExc_RuntimeError,
-                            "could not find _PyGtk_API object");
-                       PyErr_Print();
-                       return FALSE;
-        }
+                       PyObject *module_dict = PyModule_GetDict(pygtk);
+                       PyObject *cobject = PyDict_GetItemString(module_dict, 
"_PyGtk_API");
+                       if (PyCObject_Check(cobject))
+                       {
+                               _PyGtk_API = (struct _PyGtk_FunctionStruct*)
+                                       PyCObject_AsVoidPtr(cobject);
+                       }
+                       else
+                       {
+                               PyErr_SetString(PyExc_RuntimeError,
+                                               "could not find _PyGtk_API 
object");
+                               PyErr_Print();
+                               return FALSE;
+                       }
+               }
     }
     else
     {
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to