Fix aarch64 casting build warnings
[platform/core/multimedia/libmm-sound.git] / mm_sound_client.c
index 9097b76..9b60ee6 100644 (file)
@@ -374,7 +374,7 @@ static void _mm_sound_device_connected_callback_wrapper_func(int device_id, cons
                return;
        }
 
-       device_flags = (int) cb_data->extra_data;
+       device_flags = (int)(uintptr_t)cb_data->extra_data;
        if (!device_is_match_with_mask(device_type, io_direction, state, device_flags))
                return;
 
@@ -395,7 +395,7 @@ int mm_sound_client_add_device_connected_callback(int device_flags, mm_sound_dev
 
        debug_fenter();
 
-       GET_CB_DATA(cb_data, func, userdata, (void*) device_flags);
+       GET_CB_DATA(cb_data, func, userdata, (void*)(uintptr_t)device_flags);
 
        ret = mm_sound_proxy_add_device_connected_callback(_mm_sound_device_connected_callback_wrapper_func,
                                                                                                        cb_data, g_free, subs_id);
@@ -432,7 +432,7 @@ static void _mm_sound_device_info_changed_callback_wrapper_func(int device_id, c
                return;
        }
 
-       device_flags = (int) cb_data->extra_data;
+       device_flags = (int)(uintptr_t)cb_data->extra_data;
        if (!device_is_match_with_mask(device_type, io_direction, state, device_flags))
                return;
 
@@ -453,7 +453,7 @@ int mm_sound_client_add_device_info_changed_callback(int device_flags, mm_sound_
 
        debug_fenter();
 
-       GET_CB_DATA(cb_data, func, userdata, (void *) device_flags);
+       GET_CB_DATA(cb_data, func, userdata, (void *)(uintptr_t)device_flags);
 
        ret = mm_sound_proxy_add_device_info_changed_callback(_mm_sound_device_info_changed_callback_wrapper_func,
                                                                                                                cb_data, g_free, subs_id);
@@ -490,7 +490,7 @@ static void _mm_sound_device_state_changed_callback_wrapper_func(int device_id,
                return;
        }
 
-       device_flags = (int) cb_data->extra_data;
+       device_flags = (int)(uintptr_t)cb_data->extra_data;
 
        if (!device_is_match_with_mask(device_type, io_direction, state, device_flags))
                return;
@@ -512,7 +512,7 @@ int mm_sound_client_add_device_state_changed_callback(int device_flags, mm_sound
 
        debug_fenter();
 
-       GET_CB_DATA(cb_data, func, userdata, (void *) device_flags);
+       GET_CB_DATA(cb_data, func, userdata, (void *)(uintptr_t)device_flags);
 
        ret = mm_sound_proxy_add_device_state_changed_callback(_mm_sound_device_state_changed_callback_wrapper_func,
                                                                                                                cb_data, g_free, id);
@@ -548,7 +548,7 @@ static void _mm_sound_device_running_changed_callback_wrapper_func(int device_id
                return;
        }
 
-       device_flags = (int) cb_data->extra_data;
+       device_flags = (int)(uintptr_t)cb_data->extra_data;
 
        if (!device_is_match_with_mask(device_type, io_direction, state, device_flags))
                return;
@@ -570,7 +570,7 @@ int mm_sound_client_add_device_running_changed_callback(int device_flags, mm_sou
 
        debug_fenter();
 
-       GET_CB_DATA(cb_data, func, userdata, (void *) device_flags);
+       GET_CB_DATA(cb_data, func, userdata, (void *)(uintptr_t)device_flags);
 
        ret = mm_sound_proxy_add_device_running_changed_callback(_mm_sound_device_running_changed_callback_wrapper_func,
                                                                                                                        cb_data, g_free, id);
@@ -857,7 +857,7 @@ int mm_sound_client_add_volume_changed_callback_internal(mm_sound_volume_changed
 
        debug_fenter();
 
-       GET_CB_DATA(cb_data, func, userdata, (void*)is_for_internal);
+       GET_CB_DATA(cb_data, func, userdata, (void*)(uintptr_t)is_for_internal);
 
        ret = mm_sound_proxy_add_volume_changed_callback(_mm_sound_volume_changed_callback_wrapper_func, cb_data, g_free, subs_id);
 
@@ -1019,6 +1019,7 @@ int mm_sound_client_register_focus(int pid, const char *stream_type,
                goto cleanup;
        }
 
+       g_mutex_init(&g_focus_sound_handle[index].focus_lock);
        focus_init_callback(index, false);
 
 cleanup:
@@ -1046,12 +1047,9 @@ int mm_sound_client_unregister_focus(int id)
                goto cleanup;
        }
 
-       if (!g_mutex_trylock(&g_focus_sound_handle[index].focus_lock)) {
-               debug_warning("maybe focus_callback is being called, try one more time..");
-               usleep(2500000); /* 2.5 sec */
-               if (g_mutex_trylock(&g_focus_sound_handle[index].focus_lock))
-                       debug_msg("finally got focus_lock");
-       }
+       g_mutex_lock(&g_focus_sound_handle[index].focus_lock);
+
+       g_focus_sound_handle[index].is_destroying = true;
 
        ret = mm_sound_proxy_unregister_focus(index);
        if (ret == MM_ERROR_NONE)
@@ -1059,8 +1057,6 @@ int mm_sound_client_unregister_focus(int id)
        else
                debug_error("Error occurred : 0x%x", ret);
 
-       g_mutex_unlock(&g_focus_sound_handle[index].focus_lock);
-
        focus_deinit_callback(index, false);
        g_focus_sound_handle[index].focus_fd = 0;
        g_focus_sound_handle[index].focus_pid = 0;
@@ -1069,6 +1065,10 @@ int mm_sound_client_unregister_focus(int id)
        g_focus_sound_handle[index].is_used = false;
        focus_deinit_context(index, false);
 
+       g_mutex_unlock(&g_focus_sound_handle[index].focus_lock);
+       g_mutex_clear(&g_focus_sound_handle[index].focus_lock);
+
+       g_focus_sound_handle[index].is_destroying = false;
 cleanup:
        MMSOUND_LEAVE_CRITICAL_SECTION(&g_index_mutex);
        debug_fleave();