Adjust several operation's timeout threshold
[platform/core/multimedia/libmm-sound.git] / focus_server / mm_sound_mgr_focus_socket.c
index 162c552..beaaa67 100644 (file)
@@ -63,6 +63,7 @@ enum {
 };
 
 #define DEFAULT_FOCUS_THREAD_READY_TIMEOUT 5
+#define MAX_FOCUS_THREAD_READY_WAIT_RETRY 6
 
 typedef struct mm_sound_focus_thread_data {
        const int *sockfd;
@@ -560,8 +561,8 @@ void MMSoundMgrFocusSocketFini(int *sockfd)
 
 int MMSoundMgrFocusSocketReadyToWork(const int *sockfd)
 {
-       debug_enter();
        focus_thread_data_t *thread_data = NULL;
+       int retry_remaining = MAX_FOCUS_THREAD_READY_WAIT_RETRY;
 
        if (*sockfd < 0) {
                debug_error("input param sockfd [%d] is not valid", *sockfd);
@@ -577,14 +578,15 @@ int MMSoundMgrFocusSocketReadyToWork(const int *sockfd)
                goto ERROR_INTERNAL;
        }
 
-       if (!__focus_thread_ready_wait(thread_data, DEFAULT_FOCUS_THREAD_READY_TIMEOUT)) {
-               debug_error("focus thread is not ready for %u sec!!!", DEFAULT_FOCUS_THREAD_READY_TIMEOUT);
-               goto ERROR_INTERNAL;
-       }
-
-       debug_leave();
+       do {
+               if (__focus_thread_ready_wait(thread_data, DEFAULT_FOCUS_THREAD_READY_TIMEOUT)) {
+                       debug_msg("[%d] wait success!!", retry_remaining);
+                       return MM_ERROR_NONE;
+               }
 
-       return MM_ERROR_NONE;
+               debug_error("[%d] focus thread is not ready for %u sec!!!",
+                                       retry_remaining, DEFAULT_FOCUS_THREAD_READY_TIMEOUT);
+       } while (--retry_remaining > 0);
 
 ERROR_INTERNAL:
        __focus_thread_data_destroy(thread_data);