Index: ChangeLog =================================================================== RCS file: /cvs/gnome/gedit/ChangeLog,v retrieving revision 1.591 diff -u -r1.591 ChangeLog --- ChangeLog 3 Jan 2006 17:19:09 -0000 1.591 +++ ChangeLog 3 Jan 2006 18:14:39 -0000 @@ -1,3 +1,12 @@ +2006-01-03 Jesse van den Kieboom + + * gedit/gedit-plugins-engine.[ch]: + (gedit_plugins_engine_garbage_collect): new function, ensures garbage + collection for plugins + + * gedit/gedit-window.c: add garbage collection on destroy + and tab_removed + 2006-01-03 Paolo Maggi Fixes drag&drop of files from file-roller Index: gedit/gedit-window.c =================================================================== RCS file: /cvs/gnome/gedit/gedit/gedit-window.c,v retrieving revision 1.10 diff -u -r1.10 gedit-window.c --- gedit/gedit-window.c 3 Jan 2006 17:19:10 -0000 1.10 +++ gedit/gedit-window.c 3 Jan 2006 18:14:40 -0000 @@ -165,6 +165,8 @@ g_object_unref (window->priv->recent_view_uim); window->priv->recent_view_uim = NULL; } + + gedit_plugins_engine_garbage_collect(); GTK_OBJECT_CLASS (gedit_window_parent_class)->destroy (object); } @@ -234,11 +236,20 @@ } static void +gedit_window_tab_removed (GeditWindow *window, + GeditTab *tab) +{ + gedit_plugins_engine_garbage_collect(); +} + +static void gedit_window_class_init (GeditWindowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkObjectClass *gobject_class = GTK_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + klass->tab_removed = gedit_window_tab_removed; object_class->finalize = gedit_window_finalize; object_class->get_property = gedit_window_get_property; Index: gedit/gedit-plugins-engine.c =================================================================== RCS file: /cvs/gnome/gedit/gedit/gedit-plugins-engine.c,v retrieving revision 1.26 diff -u -r1.26 gedit-plugins-engine.c --- gedit/gedit-plugins-engine.c 12 Dec 2005 17:27:55 -0000 1.26 +++ gedit/gedit-plugins-engine.c 3 Jan 2006 18:14:40 -0000 @@ -387,6 +387,15 @@ gedit_plugins_engine_gconf_client = NULL; } +void +gedit_plugins_engine_garbage_collect (void) +{ + #ifdef ENABLE_PYTHON + while (PyGC_Collect ()) + ; + #endif +} + const GList * gedit_plugins_engine_get_plugins_list (void) { Index: gedit/gedit-plugins-engine.h =================================================================== RCS file: /cvs/gnome/gedit/gedit/gedit-plugins-engine.h,v retrieving revision 1.9 diff -u -r1.9 gedit-plugins-engine.h --- gedit/gedit-plugins-engine.h 12 Dec 2005 17:27:55 -0000 1.9 +++ gedit/gedit-plugins-engine.h 3 Jan 2006 18:14:40 -0000 @@ -39,6 +39,8 @@ gboolean gedit_plugins_engine_init (void); void gedit_plugins_engine_shutdown (void); +void gedit_plugins_engine_garbage_collect (void); + const GList *gedit_plugins_engine_get_plugins_list (void); gboolean gedit_plugins_engine_activate_plugin (GeditPluginInfo *info);