Mercurial > pidgin.yaz
diff src/sound.c @ 12291:5bc3d67ceb24
[gaim-migrate @ 14595]
Adam Wendt <adam@ipwebdev.com> gives us the playing-sound-event signal, now
plugins can stop sound events, or play their own.
committer: Tailor Script <tailor@pidgin.im>
author | Etan Reisner <pidgin@unreliablesource.net> |
---|---|
date | Fri, 02 Dec 2005 06:43:00 +0000 |
parents | a66ee70c614c |
children |
line wrap: on
line diff
--- a/src/sound.c Fri Dec 02 03:13:51 2005 +0000 +++ b/src/sound.c Fri Dec 02 06:43:00 2005 +0000 @@ -49,15 +49,27 @@ { GaimStatus *status; - if ((account != NULL) && (!gaim_prefs_get_bool("/core/sound/while_away"))) + if ((account != NULL) && + (!gaim_prefs_get_bool("/core/sound/while_away"))) { status = gaim_account_get_active_status(account); - if (gaim_status_is_online(status) && !gaim_status_is_available(status)) + if (gaim_status_is_online(status) && + !gaim_status_is_available(status)) return; } - if(sound_ui_ops && sound_ui_ops->play_event) - sound_ui_ops->play_event(event); + if(sound_ui_ops && sound_ui_ops->play_event) { + int plugin_return; + + plugin_return = GPOINTER_TO_INT(gaim_signal_emit_return_1( + gaim_sounds_get_handle(), "playing-sound-event", + event, account)); + + if (plugin_return) + return; + else + sound_ui_ops->play_event(event); + } } void @@ -81,6 +93,18 @@ void gaim_sound_init() { + void *handle = gaim_sounds_get_handle(); + + /********************************************************************** + * Register signals + **********************************************************************/ + + gaim_signal_register(handle, "playing-sound-event", + gaim_marshal_BOOLEAN__INT_POINTER, + gaim_value_new(GAIM_TYPE_BOOLEAN), 2, + gaim_value_new(GAIM_TYPE_INT), + gaim_value_new(GAIM_TYPE_POINTER)); + gaim_prefs_add_none("/core/sound"); gaim_prefs_add_bool("/core/sound/while_away", FALSE); @@ -91,4 +115,14 @@ { if(sound_ui_ops && sound_ui_ops->uninit) sound_ui_ops->uninit(); + + gaim_signals_unregister_by_instance(gaim_sounds_get_handle()); } + +void * +gaim_sounds_get_handle() +{ + static int handle; + + return &handle; +}