Revert "Remove default g_mainloop creation code on tizen" 15/62015/1
authorsung.goo.kim <sung.goo.kim@samsung.com>
Mon, 14 Mar 2016 01:14:21 +0000 (10:14 +0900)
committersung.goo.kim <sung.goo.kim@samsung.com>
Mon, 14 Mar 2016 01:15:26 +0000 (10:15 +0900)
This reverts commit 2b5e7007b4ce8360a0fe3f1ca2a306aeea82ca71.

Change-Id: I772036fa9b62d3feabf8904fcc16a482910cbb17

resource/csdk/connectivity/src/bt_edr_adapter/tizen/caedrnwmonitor.c

index 0c2bb6a..dd3e11d 100644 (file)
@@ -35,6 +35,7 @@
 #include "caqueueingthread.h"
 #include "caremotehandler.h"
 
+static GMainLoop *g_mainloop = NULL;
 static ca_thread_pool_t g_threadPoolHandle = NULL;
 
 /**
@@ -49,6 +50,13 @@ static CAEDRNetworkStatusCallback g_edrNetworkChangeCallback = NULL;
  */
 static void CAEDRAdapterStateChangeCallback(int result, bt_adapter_state_e adapterState,
                                             void *userData);
+
+void *GMainLoopThread (void *param)
+{
+    g_main_loop_run(g_mainloop);
+    return NULL;
+}
+
 CAResult_t CAEDRInitializeNetworkMonitor(const ca_thread_pool_t threadPool)
 {
     OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "IN");
@@ -73,6 +81,19 @@ CAResult_t CAEDRStartNetworkMonitor()
 {
     OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "IN");
 
+    g_mainloop = g_main_loop_new(NULL, 0);
+    if(!g_mainloop)
+    {
+        OIC_LOG(ERROR, EDR_ADAPTER_TAG, "g_main_loop_new failed\n");
+        return CA_STATUS_FAILED;
+    }
+
+    if (CA_STATUS_OK != ca_thread_pool_add_task(g_threadPoolHandle, GMainLoopThread, (void *) NULL))
+    {
+        OIC_LOG(ERROR, EDR_ADAPTER_TAG, "Failed to create thread!");
+        return CA_STATUS_FAILED;
+    }
+
     // Initialize Bluetooth service
     int err = bt_initialize();
     if (BT_ERROR_NONE != err)
@@ -103,6 +124,11 @@ CAResult_t CAEDRStopNetworkMonitor()
         OIC_LOG(ERROR, EDR_ADAPTER_TAG, "bt_adapter_set_state_changed_cb failed");
         return CA_STATUS_FAILED;
     }
+
+    if (g_mainloop)
+    {
+        g_main_loop_quit(g_mainloop);
+    }
     OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "OUT");
     return CA_STATUS_OK;
 }