Fix plugin stop when location setting changed 73/151173/2 submit/tizen_4.0/20170920.092211
authorkj7.sung <kj7.sung@samsung.com>
Wed, 20 Sep 2017 06:29:25 +0000 (15:29 +0900)
committerkj7.sung <kj7.sung@samsung.com>
Wed, 20 Sep 2017 08:38:11 +0000 (17:38 +0900)
- GPS case fixed
- WPS case fixed

Change-Id: Ibc5783b692bca4cec975998b266a071907ffe800
Signed-off-by: kj7.sung <kj7.sung@samsung.com>
lbs-server/src/lbs_server.c
packaging/lbs-server.spec

index ce54e60933125454bf468fb74d3b890a7b6b00ab..425891d79e55d0cfa336dbaa6e029f5416ded70a 100644 (file)
@@ -102,7 +102,6 @@ typedef struct {
        gint fused_balance_count;
        gboolean is_fused_running;
        gint current_location_source;
-       gint fused_test_block;
 } lbs_server_s;
 
 #ifndef TIZEN_DEVICE
@@ -555,7 +554,7 @@ static void stop_tracking(lbs_server_s *lbs_server, lbs_server_method_e method,
 
                break;
        case LBS_SERVER_METHOD_NPS:
-               LOG_NPS(DBG_LOW, "_stop_tracking NPS");
+               LOG_NPS(DBG_LOW, "stop tracking NPS [client: %d]", lbs_server->nps_client_count);
 
                client_count_updater(lbs_server, LBS_SERVER_METHOD_NPS, _LBS_CLIENT_REMOVE, fused_mode);
 
@@ -578,8 +577,9 @@ static void stop_tracking(lbs_server_s *lbs_server, lbs_server_method_e method,
 
 static gboolean _set_current_location_source(lbs_server_s *lbs_server, gint mode)
 {
+       LOG_GPS(DBG_LOW, "set current location source [%d]", mode);
        if (lbs_server->current_location_source != mode) {
-               LOG_GPS(DBG_LOW, "location source changed[%d]", mode);
+               LOG_GPS(DBG_LOW, "location source changed[%d -> %d]", lbs_server->current_location_source, mode);
                lbs_server->current_location_source = mode;
                return TRUE;
        }
@@ -598,6 +598,7 @@ static gboolean __get_fused_interval_control(lbs_server_s *lbs_server)
 
 static gboolean select_location_source(lbs_server_s *lbs_server)
 {
+       LOG_FUSED_FUNC;
        /*********************************************************************************
                 Define all condition to select optimized location source
                gps, high ==>     1(gps0, high0) 2(gps3, high0) 3(gps3, high1) 4(gps3, high3)
@@ -630,6 +631,7 @@ static gboolean select_location_source(lbs_server_s *lbs_server)
                        if (_set_current_location_source(lbs_server, LOCATION_SOURCE_NONE)) return TRUE;
                }
        }
+       LOG_GPS(DBG_LOW, "select location source [FALSE], keep current source [gps: %d, wps: %d]", lbs_server->gps_client_count, lbs_server->nps_client_count);
        return FALSE;
 }
 
@@ -664,8 +666,10 @@ static gboolean location_source_selector(lbs_server_s *lbs_server, gint fused_mo
                }
        }
 
-       if (select_location_source(lbs_server))
+       if (select_location_source(lbs_server)) {
+               LOG_GPS(DBG_LOW, "select location source [TRUE] --> source changed");
                return TRUE;
+       }
 
        return FALSE;
 }
@@ -1190,7 +1194,17 @@ static void set_options(GVariant *options, const gchar *client, gpointer userdat
                                free(app_id);
                        }
 
-                       stop_tracking(lbs_server, method, fused_mode);
+                       if (LBS_SERVER_METHOD_GPS == method) {
+                               if (lbs_server->gps_client_count > 0)
+                                       stop_tracking(lbs_server, method, fused_mode);
+                               else
+                                       LOG_GPS(DBG_LOW, "[STOP] stop tracking is not called because [gps: 0]");
+                       } else if (LBS_SERVER_METHOD_NPS == method) {
+                               if (lbs_server->nps_client_count > 0)
+                                       stop_tracking(lbs_server, method, fused_mode);
+                               else
+                                       LOG_GPS(DBG_LOW, "[STOP] stop tracking is not called because [wps: 0]");
+                       }
 
                }
 #ifndef TIZEN_DEVICE
@@ -1301,7 +1315,7 @@ static void set_options(GVariant *options, const gchar *client, gpointer userdat
 
 static gboolean gps_remove_all_clients(lbs_server_s *lbs_server)
 {
-       LOG_GPS(DBG_LOW, "remove_all_clients[%d] GPS", lbs_server->gps_client_count);
+       LOG_GPS(DBG_LOW, "remove_all_clients[%d] GPS, [gps client --> 0]", lbs_server->gps_client_count);
        if (lbs_server->is_mock_running == LBS_SERVER_METHOD_GPS) {
                mock_stop_tracking(lbs_server);
                setting_ignore_key_changed(VCONFKEY_LOCATION_MOCK_ENABLED, __setting_mock_cb);
@@ -1957,24 +1971,28 @@ static void client_count_updater(lbs_server_s *lbs_server, lbs_server_method_e m
        switch (method) {
                case LBS_SERVER_METHOD_GPS: {
                        g_mutex_lock(&lbs_server->mutex);
-                       if (type == _LBS_CLIENT_ADD)
+                       if (type == _LBS_CLIENT_ADD) {
                                lbs_server->gps_client_count++;
-                       else if (type == _LBS_CLIENT_REMOVE)
-                               lbs_server->gps_client_count--;
-                       else if (type == _LBS_CLIENT_REMOVE_ALL)
+                       } else if (type == _LBS_CLIENT_REMOVE) {
+                               if (lbs_server->gps_client_count > 0)
+                                       lbs_server->gps_client_count--;
+                       } else if (type == _LBS_CLIENT_REMOVE_ALL) {
                                lbs_server->gps_client_count = 0;
+                       }
 
                        g_mutex_unlock(&lbs_server->mutex);
                        break;
                }
                case LBS_SERVER_METHOD_NPS: {
                        g_mutex_lock(&lbs_server->mutex);
-                       if (type == _LBS_CLIENT_ADD)
+                       if (type == _LBS_CLIENT_ADD) {
                                lbs_server->nps_client_count++;
-                       else if (type == _LBS_CLIENT_REMOVE)
-                               lbs_server->nps_client_count--;
-                       else if (type == _LBS_CLIENT_REMOVE_ALL)
+                       } else if (type == _LBS_CLIENT_REMOVE) {
+                               if (lbs_server->nps_client_count > 0)
+                                       lbs_server->nps_client_count--;
+                       } else if (type == _LBS_CLIENT_REMOVE_ALL) {
                                lbs_server->nps_client_count = 0;
+                       }
 
                        g_mutex_unlock(&lbs_server->mutex);
                        break;
@@ -2009,6 +2027,9 @@ static void client_count_updater(lbs_server_s *lbs_server, lbs_server_method_e m
                LOG_GPS(DBG_ERR, "fused_balance count is negative value");
                lbs_server->fused_balance_count = 0;
        }
+
+       LOG_GPS(DBG_LOW, ">>> client count updater [method: %d, type: %d, gps: %d, wps: %d]",
+                                       method, type, lbs_server->gps_client_count, lbs_server->nps_client_count);
 }
 
 
index c1c981b18ab42153069707dd6d6cf7f441ddea3f..8dde1b3ea35ae3f52ff0ec425287d58c4af513b0 100644 (file)
@@ -1,6 +1,6 @@
 Name:    lbs-server
 Summary: LBS Server for Tizen
-Version: 1.2.7
+Version: 1.2.8
 Release: 1
 Group:   Location/Service
 License: Apache-2.0