ret = mm_sound_acquire_focus(stream_h->index, (mm_sound_focus_type_e)focus_mask, additional_info);
if (ret == MM_ERROR_NONE) {
stream_h->acquired_focus |= focus_mask;
+ __update_focus_status(stream_h->index, (unsigned int)stream_h->acquired_focus);
}
LOGI("<< leave : ret(%p)", ret);
ret = mm_sound_release_focus(stream_h->index, (mm_sound_focus_type_e)focus_mask, additional_info);
if (ret == MM_ERROR_NONE) {
stream_h->acquired_focus &= ~focus_mask;
+ __update_focus_status(stream_h->index, (unsigned int)stream_h->acquired_focus);
}
LOGI("<< leave : ret(%p)", ret);
#define PA_STREAM_MANAGER_METHOD_NAME_SET_STREAM_ROUTE_OPTION "SetStreamRouteOption"
#define PA_STREAM_MANAGER_METHOD_NAME_GET_VOLUME_MAX_LEVEL "GetVolumeMaxLevel"
#define PA_STREAM_MANAGER_METHOD_NAME_GET_CURRENT_VOLUME_TYPE "GetCurrentVolumeType"
+#define PA_STREAM_MANAGER_METHOD_NAME_UPDATE_FOCUS_STATUS "UpdateFocusStatus"
extern _session_interrupt_info_s g_session_interrupt_cb_table;
extern _session_mode_e g_cached_session_mode;
NULL,
&err);
if (!result && err) {
- LOGE("g_dbus_connection_call_sync() error (%s)", err->message);
+ LOGE("g_dbus_connection_call_sync() for GET_STREAM_INFO error (%s)", err->message);
+ g_error_free (err);
ret = MM_ERROR_SOUND_INTERNAL;
} else {
GVariantIter iter;
NULL,
&err);
if (!result && err) {
- LOGE("g_dbus_connection_call_sync() error (%s)", err->message);
+ LOGE("g_dbus_connection_call_sync() for SET_STREAM_ROUTE_DEVICES error (%s)", err->message);
+ g_error_free (err);
ret = MM_ERROR_SOUND_INTERNAL;
} else {
const gchar *dbus_ret = NULL;
NULL,
&err);
if (!result && err) {
- LOGE("g_dbus_connection_call_sync() error (%s)", err->message);
+ LOGE("g_dbus_connection_call_sync() for SET_STREAM_ROUTE_OPTION error (%s)", err->message);
+ g_error_free (err);
ret = MM_ERROR_SOUND_INTERNAL;
} else {
const gchar *dbus_ret = NULL;
NULL,
&err);
if (!result && err) {
- LOGE("g_dbus_connection_call_sync() error (%s)", err->message);
+ LOGE("g_dbus_connection_call_sync() for GET_VOLUME_MAX_LEVEL error (%s)", err->message);
+ g_error_free (err);
ret = MM_ERROR_SOUND_INTERNAL;
} else {
const gchar *dbus_ret = NULL;
NULL,
&err);
if (!result && err) {
- LOGE("g_dbus_connection_call_sync() error (%s)", err->message);
+ LOGE("g_dbus_connection_call_sync() for GET_CURRENT_VOLUME_TYPE error (%s)", err->message);
+ g_error_free (err);
ret = MM_ERROR_SOUND_INTERNAL;
} else {
const gchar *dbus_volume_type = NULL;
return ret;
}
+void __update_focus_status (unsigned int index, unsigned int acquired_focus_status)
+{
+ GVariant *result = NULL;
+ GDBusConnection *conn = NULL;
+ GError *err = NULL;
+
+ conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &err);
+ if (!conn && err) {
+ LOGE("g_bus_get_sync() error (%s)", err->message);
+ g_error_free (err);
+ return;
+ }
+
+ result = g_dbus_connection_call_sync (conn,
+ PA_BUS_NAME,
+ PA_STREAM_MANAGER_OBJECT_PATH,
+ PA_STREAM_MANAGER_INTERFACE,
+ PA_STREAM_MANAGER_METHOD_NAME_UPDATE_FOCUS_STATUS,
+ g_variant_new ("(uu)", index, acquired_focus_status),
+ G_VARIANT_TYPE("(s)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ 2000,
+ NULL,
+ &err);
+ if (!result && err) {
+ LOGE("g_dbus_connection_call_sync() for UPDATE_FOCUS_STATUS error (%s)", err->message);
+ g_error_free (err);
+ } else {
+ const gchar *dbus_ret = NULL;
+ g_variant_get(result, "(&s)", &dbus_ret);
+ LOGI("g_dbus_connection_call_sync() success, method return value is (%s)", dbus_ret);
+ if (strncmp("STREAM_MANAGER_RETURN_OK", dbus_ret, strlen(dbus_ret))) {
+ }
+ g_variant_unref(result);
+ }
+ g_object_unref(conn);
+ return;
+}
+
void __session_interrupt_cb (session_msg_t msg, session_event_t event, void *user_data){
if( g_session_interrupt_cb_table.user_cb ){
sound_session_interrupted_code_e e = SOUND_SESSION_INTERRUPTED_COMPLETED;