aboutsummaryrefslogtreecommitdiffstats
path: root/src/soundmanager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soundmanager.c')
-rw-r--r--src/soundmanager.c47
1 files changed, 31 insertions, 16 deletions
diff --git a/src/soundmanager.c b/src/soundmanager.c
index 1e34ce6..0a8a093 100644
--- a/src/soundmanager.c
+++ b/src/soundmanager.c
@@ -838,7 +838,7 @@ void setStreamState(struct afb_req request){
********** Callback Function invoked by Audio Manager **********
*/
-static void on_new_main_connection(void* closure, int mainConnectioID,
+static void on_new_main_connection(int mainConnectioID,
int sourceID, int sinkID, int delay, int connectionState)
{
AFB_DEBUG("%s is called",__FUNCTION__);
@@ -850,20 +850,19 @@ static void on_new_main_connection(void* closure, int mainConnectioID,
KEY_SINK_ID, sinkID,
KEY_DELAY, delay,
KEY_CONNECTION_STATE, connectionState);
- afb_event_push(ev_new_connection, res_obj);
+ afb_event_push(ev_new_connection, res_obj);
}
-static void on_removed_main_connection(void* closure, int mainConnectionID)
+static void on_removed_main_connection(int mainConnectionID)
{
AFB_DEBUG("%s is called",__FUNCTION__);
struct json_object* res_obj = json_object_new_object();
- sm_add_object_to_json_object(res_obj, 2,
- KEY_MAIN_CONNECTION_ID, mainConnectionID);
+ json_object_object_add(res_obj, KEY_MAIN_CONNECTION_ID, json_object_new_int(mainConnectionID));
afb_event_push(ev_removed_main_connection, res_obj);
}
-static void on_main_connection_state_changed(void* closure, int connectionID, int connectionState)
+static void on_main_connection_state_changed(int connectionID, int connectionState)
{
AFB_DEBUG("%s is called",__FUNCTION__);
@@ -874,7 +873,7 @@ static void on_main_connection_state_changed(void* closure, int connectionID, in
afb_event_push(ev_main_connection_state_changed, res_obj);
}
-static void on_volume_changed(void* closure, int sinkID, int volume)
+static void on_volume_changed(int sinkID, int volume)
{
AFB_DEBUG("%s is called",__FUNCTION__);
struct json_object* res_obj = json_object_new_object();
@@ -884,7 +883,7 @@ static void on_volume_changed(void* closure, int sinkID, int volume)
afb_event_push(ev_volume_changed, res_obj);
}
-static void on_sink_mute_state_changed(void* closure, int sinkID, int mute)
+static void on_sink_mute_state_changed(int sinkID, int mute)
{
AFB_DEBUG("%s is called",__FUNCTION__);
struct json_object* res_obj = json_object_new_object();
@@ -897,13 +896,28 @@ static void on_sink_mute_state_changed(void* closure, int sinkID, int mute)
/*
********** Callback Function invoked by Audio Manager Routing Interface**********
*/
-static void on_set_routing_ready(void* closure)
+static void on_set_routing_ready(void)
{
AFB_DEBUG("%s is called",__FUNCTION__);
+ struct domain_data ddata = {
+ .domainID = DYNAMIC_DOMAIN_ID,
+ .name = "SoundManager",
+ .busname = SOUND_MANAGER_BUS_NAME,
+ .nodename = "soundmanager",
+ .early = FALSE,
+ .complete = TRUE,
+ .state = DS_CONTROLLED
+ };
+ ErrorCode ec = am_proxy_register_domain(create_domain_data(&ddata) , &SOUNDMANAGER_DOMAIN_ID);
+ if(!SEND_RESULT_NO_RESP(ec)){
+ AFB_WARNING("Failed to registerDomain when asyncAbort");
+ return;
+ }
+ AFB_NOTICE("Sound Manager re-register domain, the old infomation may be lost");
afb_event_push(ev_set_routing_ready, NULL);
}
-static void on_set_routing_rundown(void* closure)
+static void on_set_routing_rundown(void)
{
AFB_DEBUG("%s is called",__FUNCTION__);
afb_event_push(ev_set_routing_ready, NULL);
@@ -918,13 +932,13 @@ static void on_set_routing_rundown(void* closure)
* Sound Manager just sends ack to Audio Manager in charge of applications.
*
*/
-static void on_async_abort(void *closure, int handle)
+static void on_async_abort(int handle)
{
AFB_DEBUG( "%s called", __FUNCTION__);
/* Nothing To Do. If it is better to implement something, I will implement */
}
-static void on_async_connect(void *closure, int handle, int connectionID,
+static void on_async_connect(int handle, int connectionID,
int sourceID, int sinkID, int connectionFormat)
{
AFB_DEBUG( "%s called", __FUNCTION__);
@@ -939,7 +953,7 @@ static void on_async_connect(void *closure, int handle, int connectionID,
afb_event_push(ev_async_connect, ev_obj);
}
-static void on_async_disconnect(void *closure, int handle, int connectionID)
+static void on_async_disconnect(int handle, int connectionID)
{
AFB_DEBUG( "%s called", __FUNCTION__);
struct json_object* ev_obj = json_object_new_object();
@@ -949,13 +963,13 @@ static void on_async_disconnect(void *closure, int handle, int connectionID)
afb_event_push(ev_async_disconnect, ev_obj);
}
-static void on_async_set_sink_volume(void *closure, int handle, int sinkID,
+static void on_async_set_sink_volume(int handle, int sinkID,
int volume, int ramp, int time)
{
AFB_DEBUG( "%s called", __FUNCTION__);
}
-static void on_async_set_source_state(void *closure, int handle, int sourceID, int sourceState)
+static void on_async_set_source_state(int handle, int sourceID, int sourceState)
{
AFB_DEBUG( "%s called", __FUNCTION__);
struct pending* pd = get_pending(pending_list, sourceID);
@@ -1107,6 +1121,7 @@ int sm_init()
am_event callback = {
.on_new_main_connection = on_new_main_connection,
.on_removed_main_connection = on_removed_main_connection,
+ .on_main_connection_state_changed = on_main_connection_state_changed,
.on_volume_changed = on_volume_changed,
.on_sink_mute_state_changed = on_sink_mute_state_changed,
.on_set_routing_ready = on_set_routing_ready,
@@ -1122,7 +1137,7 @@ int sm_init()
.on_async_set_sink_volume = on_async_set_sink_volume,
.on_async_set_source_state = on_async_set_source_state
};
- ec = open_soundmanager_interface(&instruction);
+ ec = open_soundmanager_interface(&instruction);
if(ec != OK){
AFB_ERROR("Failed to create sound manager interface");
return -1;