Merge lp:~cjcurran/indicator-sound/mute-behaviour-part2 into lp:~indicator-applet-developers/indicator-sound/trunk_3
- mute-behaviour-part2
- Merge into trunk_3
Proposed by
Conor Curran
Status: | Merged |
---|---|
Merged at revision: | 223 |
Proposed branch: | lp:~cjcurran/indicator-sound/mute-behaviour-part2 |
Merge into: | lp:~indicator-applet-developers/indicator-sound/trunk_3 |
Diff against target: |
404 lines (+106/-61) 7 files modified
src/common-defs.h (+2/-1) src/device.c (+35/-36) src/device.h (+5/-5) src/pulseaudio-mgr.c (+12/-12) src/slider-menu-item.c (+18/-3) src/voip-input-widget.c (+1/-1) src/volume-widget.c (+33/-3) |
To merge this branch: | bzr merge lp:~cjcurran/indicator-sound/mute-behaviour-part2 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ted Gould (community) | Approve | ||
Review via email:
|
Commit message
Description of the change
Final part in this mute behaviour bug. Both the voip slider and volume slider now have identical behaviour.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'src/common-defs.h' | |||
2 | --- src/common-defs.h 2011-03-09 14:17:12 +0000 | |||
3 | +++ src/common-defs.h 2011-03-15 15:53:22 +0000 | |||
4 | @@ -45,12 +45,13 @@ | |||
5 | 45 | TRANSPORT_STATE_PAUSED | 45 | TRANSPORT_STATE_PAUSED |
6 | 46 | }TransportState; | 46 | }TransportState; |
7 | 47 | 47 | ||
9 | 48 | #define NOT_ACTIVE -1 | 48 | #define NOT_ACTIVE -1 |
10 | 49 | #define DBUSMENU_PROPERTY_EMPTY -1 | 49 | #define DBUSMENU_PROPERTY_EMPTY -1 |
11 | 50 | 50 | ||
12 | 51 | /* DBUS Custom Items */ | 51 | /* DBUS Custom Items */ |
13 | 52 | #define DBUSMENU_VOLUME_MENUITEM_TYPE "x-canonical-ido-volume-type" | 52 | #define DBUSMENU_VOLUME_MENUITEM_TYPE "x-canonical-ido-volume-type" |
14 | 53 | #define DBUSMENU_VOLUME_MENUITEM_LEVEL "x-canonical-ido-volume-level" | 53 | #define DBUSMENU_VOLUME_MENUITEM_LEVEL "x-canonical-ido-volume-level" |
15 | 54 | #define DBUSMENU_VOLUME_MENUITEM_MUTE "x-canonical-ido-volume-mute" | ||
16 | 54 | 55 | ||
17 | 55 | #define DBUSMENU_VOIP_INPUT_MENUITEM_TYPE "x-canonical-ido-voip-input-type" | 56 | #define DBUSMENU_VOIP_INPUT_MENUITEM_TYPE "x-canonical-ido-voip-input-type" |
18 | 56 | #define DBUSMENU_VOIP_INPUT_MENUITEM_LEVEL "x-canonical-ido-voip-input-level" | 57 | #define DBUSMENU_VOIP_INPUT_MENUITEM_LEVEL "x-canonical-ido-voip-input-level" |
19 | 57 | 58 | ||
20 | === modified file 'src/device.c' | |||
21 | --- src/device.c 2011-03-14 19:47:59 +0000 | |||
22 | +++ src/device.c 2011-03-15 15:53:22 +0000 | |||
23 | @@ -90,11 +90,10 @@ | |||
24 | 90 | } | 90 | } |
25 | 91 | 91 | ||
26 | 92 | void | 92 | void |
28 | 93 | device_populate (Device* self, | 93 | device_sink_populate (Device* self, |
29 | 94 | const pa_sink_info* update) | 94 | const pa_sink_info* update) |
30 | 95 | { | 95 | { |
31 | 96 | DevicePrivate* priv = DEVICE_GET_PRIVATE(self); | 96 | DevicePrivate* priv = DEVICE_GET_PRIVATE(self); |
32 | 97 | device_mute_update (self, update->mute); | ||
33 | 98 | mute_menu_item_enable (priv->mute_menuitem, TRUE); | 97 | mute_menu_item_enable (priv->mute_menuitem, TRUE); |
34 | 99 | slider_menu_item_populate (priv->volume_slider_menuitem, update); | 98 | slider_menu_item_populate (priv->volume_slider_menuitem, update); |
35 | 100 | SoundState state = device_get_state_from_volume (self); | 99 | SoundState state = device_get_state_from_volume (self); |
36 | @@ -103,37 +102,11 @@ | |||
37 | 103 | sound_service_dbus_update_sound_state (priv->service, | 102 | sound_service_dbus_update_sound_state (priv->service, |
38 | 104 | priv->current_sound_state); | 103 | priv->current_sound_state); |
39 | 105 | } | 104 | } |
71 | 106 | 105 | device_mute_update (self, update->mute); | |
72 | 107 | } | 106 | } |
73 | 108 | 107 | ||
74 | 109 | void | 108 | void |
75 | 110 | device_activate_voip_item (Device* self, gint sink_input_index, gint client_index) | 109 | device_sink_update (Device* self, |
45 | 111 | { | ||
46 | 112 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); | ||
47 | 113 | if (voip_input_menu_item_is_interested (priv->voip_input_menu_item, | ||
48 | 114 | sink_input_index, | ||
49 | 115 | client_index)){ | ||
50 | 116 | voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE); | ||
51 | 117 | } | ||
52 | 118 | } | ||
53 | 119 | |||
54 | 120 | void | ||
55 | 121 | device_deactivate_voip_source (Device* self, gboolean visible) | ||
56 | 122 | { | ||
57 | 123 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); | ||
58 | 124 | visible &= voip_input_menu_item_is_active (priv->voip_input_menu_item); | ||
59 | 125 | voip_input_menu_item_deactivate_source (priv->voip_input_menu_item, visible); | ||
60 | 126 | } | ||
61 | 127 | |||
62 | 128 | void | ||
63 | 129 | device_deactivate_voip_client (Device* self) | ||
64 | 130 | { | ||
65 | 131 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); | ||
66 | 132 | voip_input_menu_item_deactivate_voip_client (priv->voip_input_menu_item); | ||
67 | 133 | } | ||
68 | 134 | |||
69 | 135 | void | ||
70 | 136 | device_update (Device* self, | ||
76 | 137 | const pa_sink_info* update) | 110 | const pa_sink_info* update) |
77 | 138 | { | 111 | { |
78 | 139 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); | 112 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); |
79 | @@ -223,22 +196,48 @@ | |||
80 | 223 | } | 196 | } |
81 | 224 | 197 | ||
82 | 225 | gint | 198 | gint |
84 | 226 | device_get_index (Device* self) | 199 | device_get_sink_index (Device* self) |
85 | 227 | { | 200 | { |
86 | 228 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); | 201 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); |
87 | 229 | return slider_menu_item_get_sink_index (priv->volume_slider_menuitem); | 202 | return slider_menu_item_get_sink_index (priv->volume_slider_menuitem); |
88 | 230 | } | 203 | } |
89 | 231 | 204 | ||
90 | 232 | gboolean | 205 | gboolean |
92 | 233 | device_is_populated (Device* self) | 206 | device_is_sink_populated (Device* self) |
93 | 234 | { | 207 | { |
94 | 235 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); | 208 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); |
95 | 236 | return dbusmenu_menuitem_property_get_bool (DBUSMENU_MENUITEM (priv->volume_slider_menuitem), | 209 | return dbusmenu_menuitem_property_get_bool (DBUSMENU_MENUITEM (priv->volume_slider_menuitem), |
96 | 237 | DBUSMENU_MENUITEM_PROP_ENABLED); | 210 | DBUSMENU_MENUITEM_PROP_ENABLED); |
97 | 238 | } | 211 | } |
98 | 239 | 212 | ||
99 | 213 | void | ||
100 | 214 | device_activate_voip_item (Device* self, gint sink_input_index, gint client_index) | ||
101 | 215 | { | ||
102 | 216 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); | ||
103 | 217 | if (voip_input_menu_item_is_interested (priv->voip_input_menu_item, | ||
104 | 218 | sink_input_index, | ||
105 | 219 | client_index)){ | ||
106 | 220 | voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE); | ||
107 | 221 | } | ||
108 | 222 | } | ||
109 | 223 | |||
110 | 224 | void | ||
111 | 225 | device_deactivate_voip_source (Device* self, gboolean visible) | ||
112 | 226 | { | ||
113 | 227 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); | ||
114 | 228 | visible &= voip_input_menu_item_is_active (priv->voip_input_menu_item); | ||
115 | 229 | voip_input_menu_item_deactivate_source (priv->voip_input_menu_item, visible); | ||
116 | 230 | } | ||
117 | 231 | |||
118 | 232 | void | ||
119 | 233 | device_deactivate_voip_client (Device* self) | ||
120 | 234 | { | ||
121 | 235 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); | ||
122 | 236 | voip_input_menu_item_deactivate_voip_client (priv->voip_input_menu_item); | ||
123 | 237 | } | ||
124 | 238 | |||
125 | 240 | void | 239 | void |
127 | 241 | device_deactivate (Device* self) | 240 | device_sink_deactivated (Device* self) |
128 | 242 | { | 241 | { |
129 | 243 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); | 242 | DevicePrivate* priv = DEVICE_GET_PRIVATE (self); |
130 | 244 | priv->current_sound_state = UNAVAILABLE; | 243 | priv->current_sound_state = UNAVAILABLE; |
131 | 245 | 244 | ||
132 | === modified file 'src/device.h' | |||
133 | --- src/device.h 2011-03-14 19:47:59 +0000 | |||
134 | +++ src/device.h 2011-03-15 15:53:22 +0000 | |||
135 | @@ -58,11 +58,11 @@ | |||
136 | 58 | */ | 58 | */ |
137 | 59 | 59 | ||
138 | 60 | // Sink related | 60 | // Sink related |
144 | 61 | void device_populate (Device* sink, const pa_sink_info* update); | 61 | void device_sink_populate (Device* sink, const pa_sink_info* update); |
145 | 62 | void device_update (Device* sink, const pa_sink_info* update); | 62 | void device_sink_update (Device* sink, const pa_sink_info* update); |
146 | 63 | gboolean device_is_populated (Device* sink); | 63 | gboolean device_is_sink_populated (Device* sink); |
147 | 64 | gint device_get_index (Device* self); | 64 | gint device_get_sink_index (Device* self); |
148 | 65 | void device_deactivate (Device* self); | 65 | void device_sink_deactivated (Device* self); |
149 | 66 | void device_update_mute (Device* self, gboolean mute_update); | 66 | void device_update_mute (Device* self, gboolean mute_update); |
150 | 67 | void device_ensure_sink_is_unmuted (Device* self); | 67 | void device_ensure_sink_is_unmuted (Device* self); |
151 | 68 | 68 | ||
152 | 69 | 69 | ||
153 | === modified file 'src/pulseaudio-mgr.c' | |||
154 | --- src/pulseaudio-mgr.c 2011-03-14 19:47:59 +0000 | |||
155 | +++ src/pulseaudio-mgr.c 2011-03-15 15:53:22 +0000 | |||
156 | @@ -226,11 +226,11 @@ | |||
157 | 226 | case PA_SUBSCRIPTION_EVENT_SINK: | 226 | case PA_SUBSCRIPTION_EVENT_SINK: |
158 | 227 | 227 | ||
159 | 228 | // We don't care about any other sink other than the active one. | 228 | // We don't care about any other sink other than the active one. |
161 | 229 | if (index != device_get_index (sink)) | 229 | if (index != device_get_sink_index (sink)) |
162 | 230 | return; | 230 | return; |
163 | 231 | 231 | ||
164 | 232 | if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) { | 232 | if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) { |
166 | 233 | device_deactivate (sink); | 233 | device_sink_deactivated (sink); |
167 | 234 | 234 | ||
168 | 235 | } | 235 | } |
169 | 236 | else{ | 236 | else{ |
170 | @@ -308,7 +308,7 @@ | |||
171 | 308 | break; | 308 | break; |
172 | 309 | case PA_CONTEXT_FAILED: | 309 | case PA_CONTEXT_FAILED: |
173 | 310 | g_warning("PA_CONTEXT_FAILED - Is PulseAudio Daemon running ?"); | 310 | g_warning("PA_CONTEXT_FAILED - Is PulseAudio Daemon running ?"); |
175 | 311 | device_deactivate (DEVICE (userdata)); | 311 | device_sink_deactivated (DEVICE (userdata)); |
176 | 312 | if (reconnect_idle_id == 0){ | 312 | if (reconnect_idle_id == 0){ |
177 | 313 | reconnect_idle_id = g_timeout_add_seconds (RECONNECT_DELAY, | 313 | reconnect_idle_id = g_timeout_add_seconds (RECONNECT_DELAY, |
178 | 314 | reconnect_to_pulse, | 314 | reconnect_to_pulse, |
179 | @@ -362,7 +362,7 @@ | |||
180 | 362 | 362 | ||
181 | 363 | if (info == NULL) { | 363 | if (info == NULL) { |
182 | 364 | g_warning("No PA server - get the hell out of here"); | 364 | g_warning("No PA server - get the hell out of here"); |
184 | 365 | device_deactivate (DEVICE (userdata)); | 365 | device_sink_deactivated (DEVICE (userdata)); |
185 | 366 | return; | 366 | return; |
186 | 367 | } | 367 | } |
187 | 368 | // Go for the default sink | 368 | // Go for the default sink |
188 | @@ -373,7 +373,7 @@ | |||
189 | 373 | pm_default_sink_info_callback, | 373 | pm_default_sink_info_callback, |
190 | 374 | userdata) )) { | 374 | userdata) )) { |
191 | 375 | g_warning("pa_context_get_sink_info_by_namet() failed"); | 375 | g_warning("pa_context_get_sink_info_by_namet() failed"); |
193 | 376 | device_deactivate (DEVICE (userdata)); | 376 | device_sink_deactivated (DEVICE (userdata)); |
194 | 377 | pa_operation_unref(operation); | 377 | pa_operation_unref(operation); |
195 | 378 | return; | 378 | return; |
196 | 379 | } | 379 | } |
197 | @@ -382,7 +382,7 @@ | |||
198 | 382 | pm_sink_info_callback, | 382 | pm_sink_info_callback, |
199 | 383 | userdata))) { | 383 | userdata))) { |
200 | 384 | g_warning("pa_context_get_sink_info_list() failed"); | 384 | g_warning("pa_context_get_sink_info_list() failed"); |
202 | 385 | device_deactivate (DEVICE (userdata)); | 385 | device_sink_deactivated (DEVICE (userdata)); |
203 | 386 | pa_operation_unref(operation); | 386 | pa_operation_unref(operation); |
204 | 387 | return; | 387 | return; |
205 | 388 | } | 388 | } |
206 | @@ -426,9 +426,9 @@ | |||
207 | 426 | return; | 426 | return; |
208 | 427 | } | 427 | } |
209 | 428 | Device* a_sink = DEVICE (userdata); | 428 | Device* a_sink = DEVICE (userdata); |
211 | 429 | if (device_is_populated (a_sink) == FALSE && | 429 | if (device_is_sink_populated (a_sink) == FALSE && |
212 | 430 | g_ascii_strncasecmp("auto_null", sink->name, 9) != 0){ | 430 | g_ascii_strncasecmp("auto_null", sink->name, 9) != 0){ |
214 | 431 | device_populate (a_sink, sink); | 431 | device_sink_populate (a_sink, sink); |
215 | 432 | } | 432 | } |
216 | 433 | } | 433 | } |
217 | 434 | } | 434 | } |
218 | @@ -448,11 +448,11 @@ | |||
219 | 448 | return; | 448 | return; |
220 | 449 | } | 449 | } |
221 | 450 | // Only repopulate if there is a change with regards the index | 450 | // Only repopulate if there is a change with regards the index |
223 | 451 | if (device_get_index (DEVICE (userdata)) == info->index) | 451 | if (device_get_sink_index (DEVICE (userdata)) == info->index) |
224 | 452 | return; | 452 | return; |
225 | 453 | 453 | ||
226 | 454 | g_debug ("Pulse Server has handed us a new default sink"); | 454 | g_debug ("Pulse Server has handed us a new default sink"); |
228 | 455 | device_populate (DEVICE (userdata), info); | 455 | device_sink_populate (DEVICE (userdata), info); |
229 | 456 | } | 456 | } |
230 | 457 | } | 457 | } |
231 | 458 | 458 | ||
232 | @@ -494,7 +494,7 @@ | |||
233 | 494 | } | 494 | } |
234 | 495 | 495 | ||
235 | 496 | // And finally check for the mute blocking state | 496 | // And finally check for the mute blocking state |
237 | 497 | if (device_get_index (a_sink) == info->sink){ | 497 | if (device_get_sink_index (a_sink) == info->sink){ |
238 | 498 | device_determine_blocking_state (a_sink); | 498 | device_determine_blocking_state (a_sink); |
239 | 499 | } | 499 | } |
240 | 500 | } | 500 | } |
241 | @@ -514,7 +514,7 @@ | |||
242 | 514 | g_warning ("update_device - our user data is not what we think it should be or the info parameter is null"); | 514 | g_warning ("update_device - our user data is not what we think it should be or the info parameter is null"); |
243 | 515 | return; | 515 | return; |
244 | 516 | } | 516 | } |
246 | 517 | device_update (DEVICE(userdata), info); | 517 | device_sink_update (DEVICE(userdata), info); |
247 | 518 | } | 518 | } |
248 | 519 | } | 519 | } |
249 | 520 | 520 | ||
250 | 521 | 521 | ||
251 | === modified file 'src/slider-menu-item.c' | |||
252 | --- src/slider-menu-item.c 2011-03-14 19:47:59 +0000 | |||
253 | +++ src/slider-menu-item.c 2011-03-15 15:53:22 +0000 | |||
254 | @@ -28,9 +28,10 @@ | |||
255 | 28 | typedef struct _SliderMenuItemPrivate SliderMenuItemPrivate; | 28 | typedef struct _SliderMenuItemPrivate SliderMenuItemPrivate; |
256 | 29 | 29 | ||
257 | 30 | struct _SliderMenuItemPrivate { | 30 | struct _SliderMenuItemPrivate { |
259 | 31 | Device* a_sink; | 31 | Device* a_sink; |
260 | 32 | gint index; | 32 | gint index; |
261 | 33 | gchar* name; | 33 | gchar* name; |
262 | 34 | gboolean mute; | ||
263 | 34 | pa_cvolume volume; | 35 | pa_cvolume volume; |
264 | 35 | pa_channel_map channel_map; | 36 | pa_channel_map channel_map; |
265 | 36 | pa_volume_t base_volume; | 37 | pa_volume_t base_volume; |
266 | @@ -75,7 +76,7 @@ | |||
267 | 75 | 76 | ||
268 | 76 | SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self); | 77 | SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self); |
269 | 77 | 78 | ||
271 | 78 | priv->index = -1; | 79 | priv->index = NOT_ACTIVE; |
272 | 79 | priv->name = NULL; | 80 | priv->name = NULL; |
273 | 80 | 81 | ||
274 | 81 | return; | 82 | return; |
275 | @@ -127,6 +128,7 @@ | |||
276 | 127 | priv->volume = slider_menu_item_construct_mono_volume (&update->volume); | 128 | priv->volume = slider_menu_item_construct_mono_volume (&update->volume); |
277 | 128 | priv->base_volume = update->base_volume; | 129 | priv->base_volume = update->base_volume; |
278 | 129 | priv->channel_map = update->channel_map; | 130 | priv->channel_map = update->channel_map; |
279 | 131 | priv->mute = update->mute; | ||
280 | 130 | 132 | ||
281 | 131 | pa_volume_t vol = pa_cvolume_max (&update->volume); | 133 | pa_volume_t vol = pa_cvolume_max (&update->volume); |
282 | 132 | gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM; | 134 | gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM; |
283 | @@ -134,6 +136,11 @@ | |||
284 | 134 | dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), | 136 | dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), |
285 | 135 | DBUSMENU_VOLUME_MENUITEM_LEVEL, | 137 | DBUSMENU_VOLUME_MENUITEM_LEVEL, |
286 | 136 | new_volume); | 138 | new_volume); |
287 | 139 | GVariant* new_mute_update = g_variant_new_int32 (update->mute); | ||
288 | 140 | dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), | ||
289 | 141 | DBUSMENU_VOLUME_MENUITEM_MUTE, | ||
290 | 142 | new_mute_update); | ||
291 | 143 | |||
292 | 137 | slider_menu_item_enable (self, TRUE); | 144 | slider_menu_item_enable (self, TRUE); |
293 | 138 | } | 145 | } |
294 | 139 | 146 | ||
295 | @@ -170,6 +177,14 @@ | |||
296 | 170 | dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), | 177 | dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), |
297 | 171 | DBUSMENU_VOLUME_MENUITEM_LEVEL, | 178 | DBUSMENU_VOLUME_MENUITEM_LEVEL, |
298 | 172 | new_volume); | 179 | new_volume); |
299 | 180 | if (priv->mute != update->mute){ | ||
300 | 181 | priv->mute = update->mute; | ||
301 | 182 | g_debug ("volume menu item - update - mute = %i", update->mute); | ||
302 | 183 | GVariant* new_mute_update = g_variant_new_int32 (update->mute); | ||
303 | 184 | dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), | ||
304 | 185 | DBUSMENU_VOLUME_MENUITEM_MUTE, | ||
305 | 186 | new_mute_update); | ||
306 | 187 | } | ||
307 | 173 | } | 188 | } |
308 | 174 | 189 | ||
309 | 175 | /* | 190 | /* |
310 | @@ -185,7 +200,7 @@ | |||
311 | 185 | DBUSMENU_MENUITEM_PROP_ENABLED, | 200 | DBUSMENU_MENUITEM_PROP_ENABLED, |
312 | 186 | active); | 201 | active); |
313 | 187 | if(active == FALSE){ | 202 | if(active == FALSE){ |
315 | 188 | priv->index = -1; | 203 | priv->index = NOT_ACTIVE; |
316 | 189 | if(priv->name != NULL){ | 204 | if(priv->name != NULL){ |
317 | 190 | g_free(priv->name); | 205 | g_free(priv->name); |
318 | 191 | priv->name = NULL; | 206 | priv->name = NULL; |
319 | 192 | 207 | ||
320 | === modified file 'src/voip-input-widget.c' | |||
321 | --- src/voip-input-widget.c 2011-03-09 16:38:11 +0000 | |||
322 | +++ src/voip-input-widget.c 2011-03-15 15:53:22 +0000 | |||
323 | @@ -95,7 +95,7 @@ | |||
324 | 95 | g_signal_connect(priv->ido_voip_input_slider, "slider-released", G_CALLBACK(voip_input_widget_slider_released), self); | 95 | g_signal_connect(priv->ido_voip_input_slider, "slider-released", G_CALLBACK(voip_input_widget_slider_released), self); |
325 | 96 | 96 | ||
326 | 97 | GtkWidget* primary_image = ido_scale_menu_item_get_primary_image((IdoScaleMenuItem*)priv->ido_voip_input_slider); | 97 | GtkWidget* primary_image = ido_scale_menu_item_get_primary_image((IdoScaleMenuItem*)priv->ido_voip_input_slider); |
328 | 98 | GIcon * primary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-none-panel"); | 98 | GIcon * primary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-zero-panel"); |
329 | 99 | gtk_image_set_from_gicon(GTK_IMAGE(primary_image), primary_gicon, GTK_ICON_SIZE_MENU); | 99 | gtk_image_set_from_gicon(GTK_IMAGE(primary_image), primary_gicon, GTK_ICON_SIZE_MENU); |
330 | 100 | g_object_unref(primary_gicon); | 100 | g_object_unref(primary_gicon); |
331 | 101 | 101 | ||
332 | 102 | 102 | ||
333 | === modified file 'src/volume-widget.c' | |||
334 | --- src/volume-widget.c 2011-03-10 19:48:26 +0000 | |||
335 | +++ src/volume-widget.c 2011-03-15 15:53:22 +0000 | |||
336 | @@ -128,11 +128,11 @@ | |||
337 | 128 | GVariant* value, gpointer userdata) | 128 | GVariant* value, gpointer userdata) |
338 | 129 | { | 129 | { |
339 | 130 | g_return_if_fail (IS_VOLUME_WIDGET (userdata)); | 130 | g_return_if_fail (IS_VOLUME_WIDGET (userdata)); |
340 | 131 | g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) ); | ||
341 | 132 | VolumeWidget* mitem = VOLUME_WIDGET(userdata); | 131 | VolumeWidget* mitem = VOLUME_WIDGET(userdata); |
342 | 133 | VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem); | 132 | VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem); |
344 | 134 | //g_debug("scrub-widget::property_update for prop %s", property); | 133 | |
345 | 135 | if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_LEVEL, property) == 0){ | 134 | if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_LEVEL, property) == 0){ |
346 | 135 | g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) ); | ||
347 | 136 | if(priv->grabbed == FALSE){ | 136 | if(priv->grabbed == FALSE){ |
348 | 137 | GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); | 137 | GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); |
349 | 138 | GtkRange *range = (GtkRange*)slider; | 138 | GtkRange *range = (GtkRange*)slider; |
350 | @@ -141,6 +141,27 @@ | |||
351 | 141 | update_accessible_desc(priv->indicator); | 141 | update_accessible_desc(priv->indicator); |
352 | 142 | } | 142 | } |
353 | 143 | } | 143 | } |
354 | 144 | if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_MUTE, property) == 0){ | ||
355 | 145 | g_debug ("volume widget - mute update "); | ||
356 | 146 | if(priv->grabbed == FALSE){ | ||
357 | 147 | GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); | ||
358 | 148 | GtkRange *range = (GtkRange*)slider; | ||
359 | 149 | gint update = g_variant_get_int32 (value); | ||
360 | 150 | gdouble level; | ||
361 | 151 | |||
362 | 152 | g_debug ("volume widget - mute update %i", update); | ||
363 | 153 | |||
364 | 154 | if (update == 1){ | ||
365 | 155 | level = 0; | ||
366 | 156 | } | ||
367 | 157 | else{ | ||
368 | 158 | level = g_variant_get_double (dbusmenu_menuitem_property_get_variant (priv->twin_item, | ||
369 | 159 | DBUSMENU_VOLUME_MENUITEM_LEVEL)); | ||
370 | 160 | } | ||
371 | 161 | gtk_range_set_value(range, level); | ||
372 | 162 | g_debug ("volume-widget - update mute with value %i", update); | ||
373 | 163 | } | ||
374 | 164 | } | ||
375 | 144 | } | 165 | } |
376 | 145 | 166 | ||
377 | 146 | static void | 167 | static void |
378 | @@ -154,9 +175,15 @@ | |||
379 | 154 | G_CALLBACK(volume_widget_property_update), self); | 175 | G_CALLBACK(volume_widget_property_update), self); |
380 | 155 | gdouble initial_level = g_variant_get_double (dbusmenu_menuitem_property_get_variant(twin_item, | 176 | gdouble initial_level = g_variant_get_double (dbusmenu_menuitem_property_get_variant(twin_item, |
381 | 156 | DBUSMENU_VOLUME_MENUITEM_LEVEL)); | 177 | DBUSMENU_VOLUME_MENUITEM_LEVEL)); |
382 | 178 | gint initial_mute = g_variant_get_int32 (dbusmenu_menuitem_property_get_variant(twin_item, | ||
383 | 179 | DBUSMENU_VOLUME_MENUITEM_MUTE)); | ||
384 | 180 | |||
385 | 157 | //g_debug("volume_widget_set_twin_item initial level = %f", initial_level); | 181 | //g_debug("volume_widget_set_twin_item initial level = %f", initial_level); |
386 | 158 | GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); | 182 | GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); |
387 | 159 | GtkRange *range = (GtkRange*)slider; | 183 | GtkRange *range = (GtkRange*)slider; |
388 | 184 | if(initial_mute == 1){ | ||
389 | 185 | initial_level = 0; | ||
390 | 186 | } | ||
391 | 160 | gtk_range_set_value(range, initial_level); | 187 | gtk_range_set_value(range, initial_level); |
392 | 161 | update_accessible_desc(priv->indicator); | 188 | update_accessible_desc(priv->indicator); |
393 | 162 | } | 189 | } |
394 | @@ -188,7 +215,10 @@ | |||
395 | 188 | GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); | 215 | GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); |
396 | 189 | gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100); | 216 | gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100); |
397 | 190 | //g_debug ("value changed %f", gtk_range_get_value(GTK_RANGE(slider))); | 217 | //g_debug ("value changed %f", gtk_range_get_value(GTK_RANGE(slider))); |
399 | 191 | if(current_value == 0 || current_value == 100){ | 218 | gint mute = g_variant_get_int32 (dbusmenu_menuitem_property_get_variant (priv->twin_item, |
400 | 219 | DBUSMENU_VOLUME_MENUITEM_MUTE)); | ||
401 | 220 | |||
402 | 221 | if((current_value == 0 && mute != 1) || current_value == 100){ | ||
403 | 192 | volume_widget_update(mitem, current_value); | 222 | volume_widget_update(mitem, current_value); |
404 | 193 | } | 223 | } |
405 | 194 | 224 |
The only thing that is odd to me is that the mute is being passed as an
int32 instead of a boolean. It seems that's how it's stored on both
sides, might as well match that on DBus.
Shouldn't break anything though.
review approve