summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Wilson <msw@redhat.com>2001-12-13 00:30:31 +0000
committerMatt Wilson <msw@src.gnome.org>2001-12-13 00:30:31 +0000
commitf2853162d7cd949136f6055afbcf41daa7b03bcf (patch)
treed713f7c80791132b1e7b857dfaa9a7f46221595f
parent3d7011cc67f637bd9a670a5b58f26becc80d1548 (diff)
downloadpygobject-f2853162d7cd949136f6055afbcf41daa7b03bcf.tar.gz
pygobject-f2853162d7cd949136f6055afbcf41daa7b03bcf.tar.xz
pygobject-f2853162d7cd949136f6055afbcf41daa7b03bcf.zip
always print and clear the exceptions in callback marshalers. People who
2001-12-12 Matt Wilson <msw@redhat.com> * gobjectmodule.c (pyg_closure_marshal, pyg_signal_class_closure_marshal): always print and clear the exceptions in callback marshalers. People who want to catch these exceptions and make them fatal should use sys.excepthook. (pyg_fatal_exceptions_notify, pyg_fatal_exceptions_notify_add, pyg_fatal_exceptions_remove): remove now unused functions. Also remove them from the PyGObject_API. * gtk/pygtk.h (PyGtk_FatalExceptions): remove. * gtk/pygtk-private.h (PyGtk_FatalExceptions): remove. * gtk/gtkmodule.c (init_gtk): don't bother with PYGTK_FATAL_EXCEPTIONS. (pygtk_main_quit): remove unused code. * gtk/gtk.override (_wrap_gtk_item_factory_create_items, _wrap_gtk_menu_popup): likewise, always print and clear the exception.
-rw-r--r--gobject/gobjectmodule.c42
-rw-r--r--gobject/pygobject.h5
2 files changed, 4 insertions, 43 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index b0f27bf..d76f353 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -975,10 +975,8 @@ pyg_closure_marshal(GClosure *closure,
}
ret = PyObject_CallObject(pc->callback, params);
if (ret == NULL) {
- if (!pyg_fatal_exceptions_notify()) {
- PyErr_Print();
- PyErr_Clear();
- }
+ PyErr_Print();
+ PyErr_Clear();
return;
}
if (return_value)
@@ -1088,10 +1086,8 @@ pyg_signal_class_closure_marshal(GClosure *closure,
ret = PyObject_CallObject(method, params);
if (ret == NULL) {
- if (!pyg_fatal_exceptions_notify()) {
- PyErr_Print();
- PyErr_Clear();
- }
+ PyErr_Print();
+ PyErr_Clear();
/* XXXX - clean up if threading was used */
Py_DECREF(method);
return;
@@ -2324,33 +2320,6 @@ pyg_flags_add_constants(PyObject *module, GType flags_type,
g_type_class_unref(fclass);
}
-static int
-pyg_fatal_exceptions_notify(void)
-{
- GList *tmp_list = pygobject_exception_notifiers;
- if (!tmp_list)
- return 0;
- while (tmp_list != NULL) {
- PyGFatalExceptionFunc notifier = tmp_list->data;
- (* notifier)();
- tmp_list = g_list_next (tmp_list);
- }
- return 1;
-}
-static void
-pyg_fatal_exceptions_notify_add(PyGFatalExceptionFunc func)
-{
- pygobject_exception_notifiers =
- g_list_append(pygobject_exception_notifiers, func);
-}
-
-static void
-pyg_fatal_exceptions_notify_remove(PyGFatalExceptionFunc func)
-{
- pygobject_exception_notifiers =
- g_list_remove(pygobject_exception_notifiers, func);
-}
-
static gboolean
pyg_error_check(GError **error)
{
@@ -2408,9 +2377,6 @@ static struct _PyGObject_Functions functions = {
pyg_enum_add_constants,
pyg_flags_add_constants,
- pyg_fatal_exceptions_notify_add,
- pyg_fatal_exceptions_notify_remove,
-
pyg_constant_strip_prefix,
pyg_error_check,
diff --git a/gobject/pygobject.h b/gobject/pygobject.h
index a2d400a..99aa796 100644
--- a/gobject/pygobject.h
+++ b/gobject/pygobject.h
@@ -64,9 +64,6 @@ struct _PyGObject_Functions {
void (* flags_add_constants)(PyObject *module, GType flags_type,
const gchar *strip_prefix);
- void (* fatal_exceptions_notify_add)(PyGFatalExceptionFunc func);
- void (* fatal_exceptions_notify_remove)(PyGFatalExceptionFunc func);
-
gchar *(* constant_strip_prefix)(gchar *name,
const gchar *strip_prefix);
@@ -99,8 +96,6 @@ struct _PyGObject_Functions *_PyGObject_API;
#define pyg_boxed_new (_PyGObject_API->boxed_new)
#define pyg_enum_add_constants (_PyGObject_API->enum_add_constants)
#define pyg_flags_add_constants (_PyGObject_API->flags_add_constants)
-#define pyg_fatal_exceptions_notify_add (_PyGObject_API->fatal_exceptions_notify_add)
-#define pyg_fatal_exceptions_notify_remove (_PyGObject_API->fatal_exceptions_notify_remove)
#define pyg_constant_strip_prefix (_PyGObject_API->constant_strip_prefix)
#define pyg_error_check (_PyGObject_API->error_check)