From: Enlightenment S. <no-...@en...> - 2008-09-18 14:57:04
|
Author: barbieri Date: 2008-09-18 14:57:01 -0700 (Thu, 18 Sep 2008) New Revision: 36089 Log: Do not delete built-in types. Carman (INdT) guys just noticed that if you delete a BuiltIn Method Cython goes crazy and later it will cause problems. This was more evident with new "calculate" callback, but might show on others as well. Modified: trunk/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi Modified: trunk/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi =================================================================== --- trunk/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi 2008-09-18 17:39:13 UTC (rev 36088) +++ trunk/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi 2008-09-18 21:57:01 UTC (rev 36089) @@ -21,6 +21,7 @@ _smart_classes = list() import traceback +import types cdef void _smart_object_delete(Evas_Object *o) with gil: cdef SmartObject obj @@ -31,42 +32,51 @@ except Exception, e: traceback.print_exc() - try: - del obj.delete - except AttributeError, e: - pass - try: - del obj.move - except AttributeError, e: - pass - try: - del obj.resize - except AttributeError, e: - pass - try: - del obj.show - except AttributeError, e: - pass - try: - del obj.hide - except AttributeError, e: - pass - try: - del obj.color_set - except AttributeError, e: - pass - try: - del obj.clip_set - except AttributeError, e: - pass - try: - del obj.clip_unset - except AttributeError, e: - pass - try: - del obj.calculate - except AttributeError, e: - pass + if type(obj.delete) is types.MethodType: + try: + del obj.delete + except AttributeError, e: + pass + if type(obj.move) is types.MethodType: + try: + del obj.move + except AttributeError, e: + pass + if type(obj.resize) is types.MethodType: + try: + del obj.resize + except AttributeError, e: + pass + if type(obj.show) is types.MethodType: + try: + del obj.show + except AttributeError, e: + pass + if type(obj.hide) is types.MethodType: + try: + del obj.hide + except AttributeError, e: + pass + if type(obj.color_set) is types.MethodType: + try: + del obj.color_set + except AttributeError, e: + pass + if type(obj.clip_set) is types.MethodType: + try: + del obj.clip_set + except AttributeError, e: + pass + if type(obj.clip_unset) is types.MethodType: + try: + del obj.clip_unset + except AttributeError, e: + pass + if type(obj.calculate) is types.MethodType: + try: + del obj.calculate + except AttributeError, e: + pass obj._smart_callbacks = None obj._m_delete = None |