device-manager: Change pa_device_manager_init()/done() to pa_device_manager_ref(... 25/51625/5 accepted/tizen/mobile/20151112.232321 accepted/tizen/tv/20151112.232339 accepted/tizen/wearable/20151112.232347 submit/tizen/20151112.104125
authorSangchul Lee <sc11.lee@samsung.com>
Wed, 11 Nov 2015 09:52:36 +0000 (18:52 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Thu, 12 Nov 2015 06:55:46 +0000 (15:55 +0900)
[Version] 5.0.12
[Profile] Common
[Issue Type] modification

Change-Id: I6ceadf41f33ebd24efea53295300743a22916693
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
src/communicator.c
src/device-manager.c
src/device-manager.h
src/hal-manager.c
src/module-policy.c

index 1a06abcdaa9bb7259514ccc9a4c142bba17045b9..da5f96b9e2bfc04dad82d5be513e4a8ea9db484d 100644 (file)
@@ -26,6 +26,8 @@
 #include "communicator.h"
 #include <pulsecore/shared.h>
 
+#define SHARED_COMMUNICATOR "tizen-communicator"
+
 struct _pa_communicator {
     PA_REFCNT_DECLARE;
 
@@ -39,7 +41,7 @@ pa_communicator* pa_communicator_get(pa_core *core) {
 
     pa_assert(core);
 
-    if ((c = pa_shared_get(core, "communicator")))
+    if ((c = pa_shared_get(core, SHARED_COMMUNICATOR)))
         return pa_communicator_ref(c);
 
     c = pa_xnew0(pa_communicator, 1);
@@ -49,7 +51,7 @@ pa_communicator* pa_communicator_get(pa_core *core) {
     for (i = 0; i < PA_COMMUNICATOR_HOOK_MAX; i++)
         pa_hook_init(&c->hooks[i], c);
 
-    pa_shared_set(core, "communicator", c);
+    pa_shared_set(core, SHARED_COMMUNICATOR, c);
 
     return c;
 }
@@ -76,7 +78,7 @@ void pa_communicator_unref(pa_communicator *c) {
         pa_hook_done(&c->hooks[i]);
 
     if (c->core)
-        pa_shared_remove(c->core, "communicator");
+        pa_shared_remove(c->core, SHARED_COMMUNICATOR);
 
     pa_xfree(c);
 }
index 1e11f598f577120a75fb2ee49e7259350b8f9e43..b50c06509931de8659b00a0eedd6ce18cf4215fe 100644 (file)
@@ -16,6 +16,7 @@
 #include <pulsecore/strbuf.h>
 #include <pulsecore/modargs.h>
 #include <pulsecore/namereg.h>
+#include <pulsecore/shared.h>
 
 #include <vconf.h>
 #include <vconf-keys.h>
@@ -28,6 +29,8 @@
 #include "communicator.h"
 #include "device-manager.h"
 
+#define SHARED_DEVICE_MANAGER "tizen-device-manager"
+
 #define DEVICE_MAP_FILE                    "/etc/pulse/device-map.json"
 #define DEVICE_PROFILE_MAX                  2
 #define DEVICE_STR_MAX                      30
@@ -342,6 +345,8 @@ struct device_file_map {
 };
 
 struct pa_device_manager {
+    PA_REFCNT_DECLARE;
+
     pa_core *core;
     pa_hook_slot *sink_put_hook_slot, *sink_state_changed_slot, *sink_unlink_hook_slot;
     pa_hook_slot *source_put_hook_slot, *source_state_changed_slot, *source_unlink_hook_slot;
@@ -4345,12 +4350,16 @@ failed:
     return -1;
 }
 
-pa_device_manager* pa_device_manager_init(pa_core *c) {
+pa_device_manager* pa_device_manager_get(pa_core *c) {
     pa_device_manager *dm;
 
-    pa_log_debug("pa_device_manager_init start");
+    pa_assert(c);
+
+    if ((dm = pa_shared_get(c, SHARED_DEVICE_MANAGER)))
+        return pa_device_manager_ref(dm);
 
     dm = pa_xnew0(pa_device_manager, 1);
+    PA_REFCNT_INIT(dm);
     dm->core = c;
     dm->bt_sco_status = DM_DEVICE_BT_SCO_STATUS_DISCONNECTED;
 
@@ -4397,17 +4406,26 @@ pa_device_manager* pa_device_manager_init(pa_core *c) {
         pa_log_warn("Set default source with mic(normal) failed");
     }
 
-    pa_log_debug("pa_device_manager_init end");
+    pa_shared_set(c, SHARED_DEVICE_MANAGER, dm);
 
     return dm;
 }
 
-void pa_device_manager_done(pa_device_manager *dm) {
+pa_device_manager* pa_device_manager_ref(pa_device_manager *dm) {
+    pa_assert(dm);
+    pa_assert(PA_REFCNT_VALUE(dm) > 0);
 
-    if (!dm)
-        return;
+    PA_REFCNT_INC(dm);
 
-    pa_log_debug("pa_device_manager_done start");
+    return dm;
+}
+
+void pa_device_manager_unref(pa_device_manager *dm) {
+    pa_assert(dm);
+    pa_assert(PA_REFCNT_VALUE(dm) > 0);
+
+    if (PA_REFCNT_DEC(dm) > 0)
+        return;
 
     if (dm->sink_put_hook_slot)
         pa_hook_slot_free(dm->sink_put_hook_slot);
@@ -4441,5 +4459,8 @@ void pa_device_manager_done(pa_device_manager *dm) {
 
     dbus_deinit(dm);
 
-    pa_log_debug("pa_device_manager_done end");
+    if (dm->core)
+        pa_shared_remove(dm->core, SHARED_DEVICE_MANAGER);
+
+    pa_xfree(dm);
 }
index aa06a586f2fc224a0a89c5ddee2dbb41d4bae620..335ada92420fe2a88146130dd4788adae6fe6551 100644 (file)
@@ -57,8 +57,9 @@ typedef struct _hook_call_data_for_info_changed {
     dm_device *device;
 } pa_device_manager_hook_data_for_info_changed;
 
-pa_device_manager* pa_device_manager_init(pa_core* core);
-void pa_device_manager_done(pa_device_manager *dm);
+pa_device_manager* pa_device_manager_get(pa_core* c);
+pa_device_manager* pa_device_manager_ref(pa_device_manager *dm);
+void pa_device_manager_unref(pa_device_manager *dm);
 
 /* get device or list */
 pa_idxset* pa_device_manager_get_device_list(pa_device_manager *dm);
index d102ca3b95392f57d43196aee7baaec318061ce9..944605390df8178dcde31f5093a1ec5d4d30bb0b 100644 (file)
@@ -27,6 +27,8 @@
 #include "tizen-audio.h"
 #include <pulsecore/shared.h>
 
+#define SHARED_HAL_MANAGER "tizen-hal-manager"
+
 /* Audio HAL library */
 #define LIB_TIZEN_AUDIO "libtizen-audio.so"
 
@@ -44,7 +46,7 @@ pa_hal_manager* pa_hal_manager_get(pa_core *core, void *user_data) {
 
     pa_assert(core);
 
-    if ((h = pa_shared_get(core, "hal-manager")))
+    if ((h = pa_shared_get(core, SHARED_HAL_MANAGER)))
         return pa_hal_manager_ref(h);
 
     h = pa_xnew0(pa_hal_manager, 1);
@@ -82,15 +84,12 @@ pa_hal_manager* pa_hal_manager_get(pa_core *core, void *user_data) {
             }
         }
 
-        pa_shared_set(core, "tizen-audio-data", h->data);
-        pa_shared_set(core, "tizen-audio-interface", &h->intf);
-
      } else {
          pa_log_error("open hal_manager failed :%s", dlerror());
          return NULL;
      }
 
-    pa_shared_set(core, "hal-manager", h);
+    pa_shared_set(core, SHARED_HAL_MANAGER, h);
 
     return h;
 }
@@ -122,7 +121,7 @@ void pa_hal_manager_unref(pa_hal_manager *h) {
     }
 
     if (h->core)
-        pa_shared_remove(h->core, "hal-manager");
+        pa_shared_remove(h->core, SHARED_HAL_MANAGER);
 
     pa_xfree(h);
 }
index 912fa386dbc38b29cca88f85a8967e9ffb758134..86d26331e9adbf5694e7f581e8a7ba667f11882e 100644 (file)
@@ -1779,7 +1779,7 @@ int pa__init(pa_module *m)
     }
     u->stream_manager = pa_stream_manager_init(u->core);
 
-    u->device_manager = pa_device_manager_init(u->core);
+    u->device_manager = pa_device_manager_get(u->core);
 
     /* load null sink/source */
     args = pa_sprintf_malloc("sink_name=%s", SINK_NULL);
@@ -1829,7 +1829,7 @@ void pa__done(pa_module *m)
     dbus_deinit(u);
 #endif
     if (u->device_manager)
-        pa_device_manager_done(u->device_manager);
+        pa_device_manager_unref(u->device_manager);
 
     if (u->stream_manager)
         pa_stream_manager_done(u->stream_manager);