# HG changeset patch # User Gary Kramlich # Date 1131318547 0 # Node ID ecd33ffb0b0a68bee5a731b830f55e8dbd9df3ac # Parent 969fd533bd5da79a8f296fc0a41555e9c47076af [gaim-migrate @ 14289] more mono cleanups from Eoin Coffey committer: Tailor Script diff -r 969fd533bd5d -r ecd33ffb0b0a plugins/mono/loader/blist-glue.c --- a/plugins/mono/loader/blist-glue.c Sun Nov 06 23:02:39 2005 +0000 +++ b/plugins/mono/loader/blist-glue.c Sun Nov 06 23:09:07 2005 +0000 @@ -12,22 +12,12 @@ MonoObject* gaim_blist_build_buddy_object(void* data) { MonoObject *obj = NULL; - MonoClass *klass = NULL; GaimBuddy *buddy = (GaimBuddy*)data; - klass = mono_class_from_name(ml_get_api_image(), "Gaim", "Buddy"); - if (!klass) { - gaim_debug(GAIM_DEBUG_FATAL, "mono", "couldn't build the class!\n"); - } - - obj = mono_object_new(ml_get_domain(), klass); - if (!obj) { - gaim_debug(GAIM_DEBUG_FATAL, "mono", "couldn't create the object!\n"); - } - - mono_runtime_object_init(obj); - + obj = ml_create_api_object("Buddy"); + g_return_val_if_fail(obj != NULL, NULL); + ml_set_prop_string(obj, "Name", (char*)gaim_buddy_get_name(buddy)); ml_set_prop_string(obj, "Alias", (char*)gaim_buddy_get_alias(buddy)); diff -r 969fd533bd5d -r ecd33ffb0b0a plugins/mono/loader/mono-helper.c --- a/plugins/mono/loader/mono-helper.c Sun Nov 06 23:02:39 2005 +0000 +++ b/plugins/mono/loader/mono-helper.c Sun Nov 06 23:09:07 2005 +0000 @@ -167,6 +167,28 @@ return obj; } +MonoObject* ml_create_api_object(char *class_name) +{ + MonoObject *obj = NULL; + MonoClass *klass = NULL; + + klass = mono_class_from_name(ml_get_api_image(), "Gaim", class_name); + if (!klass) { + gaim_debug(GAIM_DEBUG_FATAL, "mono", "couldn't find the '%s' class\n", class_name); + return NULL; + } + + obj = mono_object_new(ml_get_domain(), klass); + if (!obj) { + gaim_debug(GAIM_DEBUG_FATAL, "mono", "couldn't create the object from class '%s'\n", class_name); + return NULL; + } + + mono_runtime_object_init(obj); + + return obj; +} + static MonoDomain *_domain = NULL; MonoDomain* ml_get_domain(void) @@ -198,11 +220,6 @@ mono_add_internal_call("Gaim.BuddyList::_get_handle", gaim_blist_get_handle_glue); } -void ml_destroy_signal_data(gpointer data, gpointer user_data) -{ - g_free(data); -} - static GHashTable *plugins_hash = NULL; void ml_add_plugin(GaimMonoPlugin *plugin) diff -r 969fd533bd5d -r ecd33ffb0b0a plugins/mono/loader/mono-helper.h --- a/plugins/mono/loader/mono-helper.h Sun Nov 06 23:02:39 2005 +0000 +++ b/plugins/mono/loader/mono-helper.h Sun Nov 06 23:09:07 2005 +0000 @@ -52,12 +52,12 @@ MonoObject* ml_object_from_gaim_subtype(GaimSubType type, gpointer data); +MonoObject* ml_create_api_object(char *class_name); + void ml_set_api_image(MonoImage *image); MonoImage* ml_get_api_image(); -void ml_destroy_signal_data(gpointer data, gpointer user_data); - /* hash table stuff; probably don't need it anymore */ void ml_add_plugin(GaimMonoPlugin *plugin); diff -r 969fd533bd5d -r ecd33ffb0b0a plugins/mono/loader/mono.c --- a/plugins/mono/loader/mono.c Sun Nov 06 23:02:39 2005 +0000 +++ b/plugins/mono/loader/mono.c Sun Nov 06 23:09:07 2005 +0000 @@ -144,6 +144,7 @@ mplug = (GaimMonoPlugin*)plugin->info->extra_info; gaim_signals_disconnect_by_handle((gpointer)mplug->klass); + g_list_foreach(mplug->signal_data, (GFunc)g_free, NULL); g_list_free(mplug->signal_data); mplug->signal_data = NULL; diff -r 969fd533bd5d -r ecd33ffb0b0a plugins/mono/loader/status-glue.c --- a/plugins/mono/loader/status-glue.c Sun Nov 06 23:02:39 2005 +0000 +++ b/plugins/mono/loader/status-glue.c Sun Nov 06 23:09:07 2005 +0000 @@ -4,22 +4,11 @@ MonoObject* gaim_status_build_status_object(void* data) { MonoObject *obj = NULL; - MonoClass *klass = NULL; - GaimStatus *status = (GaimStatus*)data; - klass = mono_class_from_name(ml_get_api_image(), "Gaim", "Status"); - if (!klass) { - gaim_debug(GAIM_DEBUG_FATAL, "mono", "couldn't build the class!\n"); - } - - obj = mono_object_new(ml_get_domain(), klass); - if (!obj) { - gaim_debug(GAIM_DEBUG_FATAL, "mono", "couldn't create the object!\n"); - } - - mono_runtime_object_init(obj); - + obj = ml_create_api_object("Status"); + g_return_val_if_fail(obj != NULL, NULL); + ml_set_prop_string(obj, "Id", (char*)gaim_status_get_id(status)); return obj;