hal-api: power: Use usage_count to support multiple call
[platform/hal/api/power.git] / src / hal-api-power.c
index e103ff9..61a3e09 100644 (file)
@@ -32,6 +32,7 @@
 #define ARRAY_SIZE(name)       (sizeof(name)/sizeof(name[0]))
 
 static hal_backend_power_funcs *g_power_funcs = NULL;
+static unsigned int g_power_funcs_count = 0;
 
 static int is_supported_from_backend(hal_backend_power_funcs *funcs, int res_type)
 {
@@ -155,6 +156,8 @@ static struct pass_resource_battery_ops *get_charging(hal_backend_power_funcs *f
 
 EXPORT int hal_power_get_backend(unsigned int res_type)
 {
+       g_power_funcs_count++;
+
        if (!g_power_funcs) {
                int ret;
 
@@ -177,8 +180,11 @@ EXPORT int hal_power_get_backend(unsigned int res_type)
 
 EXPORT int hal_power_put_backend(void)
 {
-       if (!g_power_funcs)
-               return -ENOTSUP;
+       if (!g_power_funcs_count)
+               return 0;
+
+       if (--g_power_funcs_count > 0)
+               return 0;
 
        hal_common_put_backend(HAL_MODULE_POWER, (void *)g_power_funcs);
        g_power_funcs = NULL;