Use static keyword for global variables
[platform/core/multimedia/libmm-sound.git] / mm_sound_proxy.c
index 04f493f..5f3548c 100644 (file)
@@ -238,6 +238,13 @@ static void dbus_callback(audio_event_t event, GVariant *params, void *userdata)
                int ended_handle = 0;
                g_variant_get(params, "(i)", &ended_handle);
                ((mm_sound_stop_callback_wrapper_func)(cb_data->user_cb))(ended_handle, cb_data->user_data);
+       } else if (event == AUDIO_EVENT_DUCKING_STATE_CHANGED) {
+               int idx = 0;
+               int is_ducked = 0;
+
+               g_variant_get(params, "(ii)", &idx, &is_ducked);
+
+               ((mm_sound_ducking_state_changed_wrapper_cb)(cb_data->user_cb))(idx, is_ducked, cb_data->user_data);
        }
 }
 
@@ -711,6 +718,37 @@ int mm_sound_proxy_remove_volume_changed_callback(unsigned subs_id)
        return ret;
 }
 
+int mm_sound_proxy_add_ducking_state_changed_callback(mm_sound_ducking_state_changed_wrapper_cb func, void* userdata, mm_sound_proxy_userdata_free freefunc, unsigned *subs_id)
+{
+       int ret = MM_ERROR_NONE;
+       struct callback_data *cb_data;
+
+       debug_fenter();
+
+       CB_DATA_NEW(cb_data, func, userdata, freefunc);
+
+       if ((ret = mm_sound_dbus_signal_subscribe_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_EVENT_DUCKING_STATE_CHANGED, dbus_callback, cb_data, simple_callback_data_free_func, &cb_data->subs_id)) != MM_ERROR_NONE)
+               debug_error("Add Duckding State changed callback failed");
+       else
+               *subs_id = cb_data->subs_id;
+
+       debug_fleave();
+
+       return ret;
+}
+
+int mm_sound_proxy_remove_ducking_state_changed_callback(unsigned subs_id)
+{
+       int ret = MM_ERROR_NONE;
+       debug_fenter();
+
+       if ((ret = mm_sound_dbus_signal_unsubscribe(subs_id)) != MM_ERROR_NONE)
+               debug_error("Remove Ducking State changed callback failed");
+
+       debug_fleave();
+       return ret;
+}
+
 int mm_sound_proxy_set_mute_by_type(const char *volume_type, bool mute)
 {
        int ret = MM_ERROR_NONE;