plugins/mono/loader/mono-helper.c

changeset 11996
858bd928831c
parent 11980
fe5c2c58508c
equal deleted inserted replaced
11995:3dae726c0bfc 11996:858bd928831c
165 } 165 }
166 166
167 return obj; 167 return obj;
168 } 168 }
169 169
170 MonoObject* ml_create_api_object(char *class_name)
171 {
172 MonoObject *obj = NULL;
173 MonoClass *klass = NULL;
174
175 klass = mono_class_from_name(ml_get_api_image(), "Gaim", class_name);
176 if (!klass) {
177 gaim_debug(GAIM_DEBUG_FATAL, "mono", "couldn't find the '%s' class\n", class_name);
178 return NULL;
179 }
180
181 obj = mono_object_new(ml_get_domain(), klass);
182 if (!obj) {
183 gaim_debug(GAIM_DEBUG_FATAL, "mono", "couldn't create the object from class '%s'\n", class_name);
184 return NULL;
185 }
186
187 mono_runtime_object_init(obj);
188
189 return obj;
190 }
191
170 static MonoDomain *_domain = NULL; 192 static MonoDomain *_domain = NULL;
171 193
172 MonoDomain* ml_get_domain(void) 194 MonoDomain* ml_get_domain(void)
173 { 195 {
174 return _domain; 196 return _domain;
194 void ml_init_internal_calls(void) 216 void ml_init_internal_calls(void)
195 { 217 {
196 mono_add_internal_call("Gaim.Debug::_debug", gaim_debug_glue); 218 mono_add_internal_call("Gaim.Debug::_debug", gaim_debug_glue);
197 mono_add_internal_call("Gaim.Signal::_connect", gaim_signal_connect_glue); 219 mono_add_internal_call("Gaim.Signal::_connect", gaim_signal_connect_glue);
198 mono_add_internal_call("Gaim.BuddyList::_get_handle", gaim_blist_get_handle_glue); 220 mono_add_internal_call("Gaim.BuddyList::_get_handle", gaim_blist_get_handle_glue);
199 }
200
201 void ml_destroy_signal_data(gpointer data, gpointer user_data)
202 {
203 g_free(data);
204 } 221 }
205 222
206 static GHashTable *plugins_hash = NULL; 223 static GHashTable *plugins_hash = NULL;
207 224
208 void ml_add_plugin(GaimMonoPlugin *plugin) 225 void ml_add_plugin(GaimMonoPlugin *plugin)

mercurial