Try to unregister plugins on exit
This commit is contained in:
parent
cbc2f8cd19
commit
9174798646
@ -292,16 +292,16 @@
|
|||||||
</kdevdoctreeview>
|
</kdevdoctreeview>
|
||||||
<kdevfilecreate>
|
<kdevfilecreate>
|
||||||
<filetypes>
|
<filetypes>
|
||||||
<type icon="source" ext="g" name="GAP source" create="template" >
|
<type icon="source" ext="g" create="template" name="GAP source" >
|
||||||
<descr>A new empty GAP source file</descr>
|
<descr>A new empty GAP source file</descr>
|
||||||
</type>
|
</type>
|
||||||
<type icon="source_cpp" ext="cpp" name="C++ Source" create="template" >
|
<type icon="source_cpp" ext="cpp" create="template" name="C++ Source" >
|
||||||
<descr>A new empty C++ file.</descr>
|
<descr>A new empty C++ file.</descr>
|
||||||
</type>
|
</type>
|
||||||
<type icon="source_h" ext="h" name="C/C++ Header" create="template" >
|
<type icon="source_h" ext="h" create="template" name="C/C++ Header" >
|
||||||
<descr>A new empty header file for C/C++.</descr>
|
<descr>A new empty header file for C/C++.</descr>
|
||||||
</type>
|
</type>
|
||||||
<type icon="source_c" ext="c" name="C Source" create="template" >
|
<type icon="source_c" ext="c" create="template" name="C Source" >
|
||||||
<descr>A new empty C file.</descr>
|
<descr>A new empty C file.</descr>
|
||||||
</type>
|
</type>
|
||||||
</filetypes>
|
</filetypes>
|
||||||
|
@ -1055,6 +1055,9 @@ moo_app_quit_real (MooApp *app)
|
|||||||
|
|
||||||
#ifdef MOO_BUILD_EDIT
|
#ifdef MOO_BUILD_EDIT
|
||||||
moo_editor_close_all (app->priv->editor, TRUE);
|
moo_editor_close_all (app->priv->editor, TRUE);
|
||||||
|
|
||||||
|
moo_plugin_shutdown ();
|
||||||
|
|
||||||
g_object_unref (app->priv->editor);
|
g_object_unref (app->priv->editor);
|
||||||
app->priv->editor = NULL;
|
app->priv->editor = NULL;
|
||||||
#endif /* MOO_BUILD_EDIT */
|
#endif /* MOO_BUILD_EDIT */
|
||||||
|
@ -979,6 +979,48 @@ moo_plugin_read_dirs (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
moo_plugin_shutdown (void)
|
||||||
|
{
|
||||||
|
GSList *list;
|
||||||
|
|
||||||
|
if (!plugin_store || !plugin_store->dirs_read)
|
||||||
|
return;
|
||||||
|
|
||||||
|
list = g_slist_copy (plugin_store->list);
|
||||||
|
g_slist_foreach (list, (GFunc) g_object_ref, NULL);
|
||||||
|
|
||||||
|
while (list)
|
||||||
|
{
|
||||||
|
moo_plugin_unregister (G_OBJECT_TYPE (list->data));
|
||||||
|
g_object_unref (list->data);
|
||||||
|
list = g_slist_delete_link (list, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef MOO_USE_PYGTK
|
||||||
|
_moo_python_plugin_deinit ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
plugin_store->dirs_read = FALSE;
|
||||||
|
plugin_store->editor = NULL;
|
||||||
|
|
||||||
|
if (plugin_store->list)
|
||||||
|
{
|
||||||
|
g_critical ("%s: could not unregister all plugins", G_STRLOC);
|
||||||
|
g_slist_free (plugin_store->list);
|
||||||
|
plugin_store->list = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_hash_table_destroy (plugin_store->names);
|
||||||
|
plugin_store->names = NULL;
|
||||||
|
|
||||||
|
g_strfreev (plugin_store->dirs);
|
||||||
|
plugin_store->dirs = NULL;
|
||||||
|
|
||||||
|
plugin_store = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_moo_window_attach_plugins (MooEditWindow *window)
|
_moo_window_attach_plugins (MooEditWindow *window)
|
||||||
{
|
{
|
||||||
|
@ -212,6 +212,7 @@ const char *moo_plugin_version (MooPlugin *plugin);
|
|||||||
|
|
||||||
char **moo_plugin_get_dirs (void);
|
char **moo_plugin_get_dirs (void);
|
||||||
void moo_plugin_read_dirs (void);
|
void moo_plugin_read_dirs (void);
|
||||||
|
void moo_plugin_shutdown (void);
|
||||||
|
|
||||||
void moo_plugin_set_info (MooPlugin *plugin,
|
void moo_plugin_set_info (MooPlugin *plugin,
|
||||||
MooPluginInfo *info);
|
MooPluginInfo *info);
|
||||||
|
@ -370,6 +370,15 @@ _moo_python_plugin_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
_moo_python_plugin_deinit (void)
|
||||||
|
{
|
||||||
|
Py_XDECREF (main_mod);
|
||||||
|
main_mod = NULL;
|
||||||
|
moo_python_init (MOO_PY_API_VERSION, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef MOO_PYTHON_PLUGIN
|
#ifdef MOO_PYTHON_PLUGIN
|
||||||
MOO_PLUGIN_INIT_FUNC_DECL;
|
MOO_PLUGIN_INIT_FUNC_DECL;
|
||||||
MOO_PLUGIN_INIT_FUNC_DECL
|
MOO_PLUGIN_INIT_FUNC_DECL
|
||||||
|
@ -20,6 +20,7 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
|
|
||||||
gboolean _moo_python_plugin_init (void);
|
gboolean _moo_python_plugin_init (void);
|
||||||
|
void _moo_python_plugin_deinit (void);
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user