Mercurial > pidgin
annotate libgaim/sound.c @ 14631:622931ca5622
[gaim-migrate @ 17377]
A pending yahoo_buddy_icon_upload() request is now cancelled when disconnecting or if a second upload request is made, which can happen if the user rapidly changes buddy icons.
committer: Tailor Script <tailor@pidgin.im>
author | Evan Schoenberg <evan.s@dreskin.net> |
---|---|
date | Tue, 26 Sep 2006 23:20:39 +0000 |
parents | 2f0b4d0de5bb |
children | 71149a751439 |
rev | line source |
---|---|
14192 | 1 /* |
2 * gaim | |
3 * | |
4 * Gaim is the legal property of its developers, whose names are too numerous | |
5 * to list here. Please refer to the COPYRIGHT file distributed with this | |
6 * source distribution. | |
7 * | |
8 * This program is free software; you can redistribute it and/or modify | |
9 * it under the terms of the GNU General Public License as published by | |
10 * the Free Software Foundation; either version 2 of the License, or | |
11 * (at your option) any later version. | |
12 * | |
13 * This program is distributed in the hope that it will be useful, | |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 * GNU General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU General Public License | |
19 * along with this program; if not, write to the Free Software | |
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
21 * | |
22 */ | |
23 #include "internal.h" | |
24 | |
25 #include "blist.h" | |
26 #include "prefs.h" | |
27 #include "sound.h" | |
28 | |
29 static GaimSoundUiOps *sound_ui_ops = NULL; | |
30 | |
31 void | |
32 gaim_sound_play_file(const char *filename, const GaimAccount *account) | |
33 { | |
34 GaimStatus *status; | |
35 | |
36 if ((account != NULL) && (!gaim_prefs_get_bool("/core/sound/while_away"))) | |
37 { | |
38 status = gaim_account_get_active_status(account); | |
39 if (gaim_status_is_online(status) && !gaim_status_is_available(status)) | |
40 return; | |
41 } | |
42 | |
43 if(sound_ui_ops && sound_ui_ops->play_file) | |
44 sound_ui_ops->play_file(filename); | |
45 } | |
46 | |
47 void | |
48 gaim_sound_play_event(GaimSoundEventID event, const GaimAccount *account) | |
49 { | |
50 GaimStatus *status; | |
51 | |
52 if ((account != NULL) && | |
53 (!gaim_prefs_get_bool("/core/sound/while_away"))) | |
54 { | |
55 status = gaim_account_get_active_status(account); | |
56 if (gaim_status_is_online(status) && | |
57 !gaim_status_is_available(status)) | |
58 return; | |
59 } | |
60 | |
61 if(sound_ui_ops && sound_ui_ops->play_event) { | |
62 int plugin_return; | |
63 | |
64 plugin_return = GPOINTER_TO_INT(gaim_signal_emit_return_1( | |
65 gaim_sounds_get_handle(), "playing-sound-event", | |
66 event, account)); | |
67 | |
68 if (plugin_return) | |
69 return; | |
70 else | |
71 sound_ui_ops->play_event(event); | |
72 } | |
73 } | |
74 | |
75 void | |
76 gaim_sound_set_ui_ops(GaimSoundUiOps *ops) | |
77 { | |
78 if(sound_ui_ops && sound_ui_ops->uninit) | |
79 sound_ui_ops->uninit(); | |
80 | |
81 sound_ui_ops = ops; | |
82 | |
83 if(sound_ui_ops && sound_ui_ops->init) | |
84 sound_ui_ops->init(); | |
85 } | |
86 | |
87 GaimSoundUiOps * | |
88 gaim_sound_get_ui_ops(void) | |
89 { | |
90 return sound_ui_ops; | |
91 } | |
92 | |
93 void | |
94 gaim_sound_init() | |
95 { | |
96 void *handle = gaim_sounds_get_handle(); | |
97 | |
98 /********************************************************************** | |
99 * Register signals | |
100 **********************************************************************/ | |
101 | |
102 gaim_signal_register(handle, "playing-sound-event", | |
103 gaim_marshal_BOOLEAN__INT_POINTER, | |
104 gaim_value_new(GAIM_TYPE_BOOLEAN), 2, | |
105 gaim_value_new(GAIM_TYPE_INT), | |
14618
2f0b4d0de5bb
[gaim-migrate @ 17346]
Etan Reisner <pidgin@unreliablesource.net>
parents:
14192
diff
changeset
|
106 gaim_value_new(GAIM_TYPE_SUBTYPE, |
2f0b4d0de5bb
[gaim-migrate @ 17346]
Etan Reisner <pidgin@unreliablesource.net>
parents:
14192
diff
changeset
|
107 GAIM_SUBTYPE_ACCOUNT)); |
14192 | 108 |
109 gaim_prefs_add_none("/core/sound"); | |
110 gaim_prefs_add_bool("/core/sound/while_away", FALSE); | |
111 | |
112 } | |
113 | |
114 void | |
115 gaim_sound_uninit() | |
116 { | |
117 if(sound_ui_ops && sound_ui_ops->uninit) | |
118 sound_ui_ops->uninit(); | |
119 | |
120 gaim_signals_unregister_by_instance(gaim_sounds_get_handle()); | |
121 } | |
122 | |
123 void * | |
124 gaim_sounds_get_handle() | |
125 { | |
126 static int handle; | |
127 | |
128 return &handle; | |
129 } |