Modified setting debug information 41/184041/2
authorHwankyu Jhun <h.jhun@samsung.com>
Fri, 13 Jul 2018 07:24:32 +0000 (16:24 +0900)
committerHwanKyu Jhun <h.jhun@samsung.com>
Mon, 16 Jul 2018 02:08:14 +0000 (02:08 +0000)
- Uses AUL debug info functions

Change-Id: I2d08c76473c50b12b25975858675ae224d2362f1
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/widget_instance.c

index 4430ef7..dac58c3 100644 (file)
@@ -30,6 +30,7 @@
 #include <aul_svc.h>
 #include <aul_app_com.h>
 #include <aul_widget.h>
+#include <aul_debug_info.h>
 #include <widget_service.h>
 #include <widget_service_internal.h>
 #include <bundle_internal.h>
@@ -79,10 +80,8 @@ struct widget_app {
 };
 
 struct _sdk_util {
-       char *name;
-       char **args;
-       int argc;
-       char *caller;
+       bool initialized;
+       bundle *b;
 };
 
 static GList *_widget_instances = NULL;
@@ -112,7 +111,6 @@ struct event_cb_s {
 };
 
 static int __fault_handler(int pid);
-static void __free_sdk_util(void);
 
 extern int widget_service_get_update_period(const char *widget_id, double *period);
 
@@ -460,10 +458,15 @@ EAPI int widget_instance_launch(const char *instance_id, char *content_info, int
                return -1;
        }
 
-       b = bundle_create();
-       if (b == NULL) {
-               _E("out of memory");
-               return -1;
+       if (sdk_util.b) {
+               b = sdk_util.b;
+               sdk_util.b = NULL;
+       } else {
+               b = bundle_create();
+               if (b == NULL) {
+                       _E("out of memory");
+                       return -1;
+               }
        }
 
        snprintf(pid_buf, sizeof(pid_buf), "%d", getpid());
@@ -472,24 +475,6 @@ EAPI int widget_instance_launch(const char *instance_id, char *content_info, int
        bundle_add_str(b, WIDGET_K_OPERATION, "create");
        bundle_add_byte(b, WIDGET_K_PERIOD, &(instance->period), sizeof(double));
 
-       if (sdk_util.name) {
-               bundle_add_str(b, AUL_K_SDK, sdk_util.name);
-               if (sdk_util.caller)
-                       bundle_add_str(b, AUL_K_ORG_CALLER_PID, sdk_util.caller);
-               if (strcmp(sdk_util.name, SDK_DEBUG) == 0) {
-                       if (sdk_util.args) {
-                               bundle_add_str_array(b, DLP_K_DEBUG_ARG,
-                                               (const char **)sdk_util.args, sdk_util.argc);
-                       }
-               } else if (strcmp(sdk_util.name, SDK_VALGRIND) == 0) {
-                       if (sdk_util.args) {
-                               bundle_add_str_array(b, DLP_K_VALGRIND_ARG,
-                                               (const char **)sdk_util.args, sdk_util.argc);
-                       }
-               }
-               __free_sdk_util();
-       }
-
        if (content_info) {
                bundle_add_str(b, WIDGET_K_CONTENT_INFO, content_info);
                instance->content_info = strdup(content_info);
@@ -927,6 +912,16 @@ EAPI int widget_instance_init(const char *viewer_id)
 
 EAPI int widget_instance_fini()
 {
+       if (sdk_util.initialized) {
+               aul_debug_info_fini();
+               sdk_util.initialized = false;
+       }
+
+       if (sdk_util.b) {
+               bundle_free(sdk_util.b);
+               sdk_util.b = NULL;
+       }
+
        if (lifecycle_tbl) {
                g_hash_table_destroy(lifecycle_tbl);
                lifecycle_tbl = NULL;
@@ -1260,109 +1255,38 @@ EAPI int widget_instance_unlisten_status(const char *widget_id)
        return 0;
 }
 
-static void __free_sdk_util(void)
-{
-       int i;
-
-       if (sdk_util.caller) {
-               free(sdk_util.caller);
-               sdk_util.caller = NULL;
-       }
-
-       if (sdk_util.args) {
-               for (i = 0; i < sdk_util.argc; i++) {
-                       if (sdk_util.args[i])
-                               free(sdk_util.args[i]);
-               }
-               free(sdk_util.args);
-               sdk_util.args = NULL;
-               sdk_util.argc = 0;
-       }
-
-       if (sdk_util.name) {
-               free(sdk_util.name);
-               sdk_util.name = NULL;
-       }
-}
-
 EAPI int widget_service_set_sdk_util(bundle *data)
 {
-       const char *caller_pid;
-       const char *util;
-       const char *util_arg = NULL;
-       const char **util_arg_array = NULL;
-       int len = 0;
-       int ret;
-       int i;
-
-       __free_sdk_util();
-
-       caller_pid = bundle_get_val(data, AUL_K_ORG_CALLER_PID);
-       if (caller_pid == NULL)
-               caller_pid = bundle_get_val(data, AUL_K_CALLER_PID);
+       const char *val;
+       int r;
 
-       util = bundle_get_val(data, AUL_K_SDK);
-       if (util == NULL)
+       val = bundle_get_val(data, AUL_K_SDK);
+       if (val == NULL)
                return -1;
 
-       sdk_util.name = strdup(util);
-       if (sdk_util.name == NULL) {
-               _E("out of memory"); /* LCOV_EXCL_LINE */
-               return -1; /* LCOV_EXCL_LINE */
-       }
-
-       if (strcmp(util, SDK_DEBUG) == 0) {
-               ret = bundle_get_type(data, DLP_K_DEBUG_ARG);
-               if (ret == BUNDLE_TYPE_STR_ARRAY) {
-                       util_arg_array = bundle_get_str_array(data,
-                                       DLP_K_DEBUG_ARG, &len);
-               } else if (ret == BUNDLE_TYPE_STR) {
-                       util_arg = bundle_get_val(data, DLP_K_DEBUG_ARG);
-                       if (util_arg) {
-                               util_arg_array = &util_arg;
-                               len = 1;
-                       }
-               }
-       } else if (strcmp(util, SDK_VALGRIND) == 0) {
-               ret = bundle_get_type(data, DLP_K_VALGRIND_ARG);
-               if (ret == BUNDLE_TYPE_STR_ARRAY) {
-                       util_arg_array = bundle_get_str_array(data,
-                                       DLP_K_VALGRIND_ARG, &len);
-               } else if (ret == BUNDLE_TYPE_STR) {
-                       util_arg = bundle_get_val(data, DLP_K_VALGRIND_ARG);
-                       if (util_arg) {
-                               util_arg_array = &util_arg;
-                               len = 1;
-                       }
+       if (!sdk_util.initialized) {
+               r = aul_debug_info_init();
+               if (r != AUL_R_OK) {
+                       _E("Failed to initialize debug info");
+                       return -1;
                }
        }
 
-       if (util_arg_array) {
-               sdk_util.argc = len;
-               sdk_util.args = calloc(len + 1, sizeof(char *));
-               if (sdk_util.args == NULL) {
-                       _E("out of memory"); /* LCOV_EXCL_LINE */
-                       __free_sdk_util(); /* LCOV_EXCL_LINE */
-                       return -1; /* LCOV_EXCL_LINE */
-               }
+       if (sdk_util.b)
+               bundle_free(sdk_util.b);
 
-               for (i = 0; i < len; i++) {
-                       sdk_util.args[i] = strdup(util_arg_array[i]);
-                       if (sdk_util.args[i] == NULL) {
-                               _E("out of memory"); /* LCOV_EXCL_LINE */
-                               __free_sdk_util(); /* LCOV_EXCL_LINE */
-                               return -1; /* LCOV_EXCL_LINE */
-                       }
-               }
+       sdk_util.b = bundle_create();
+       if (sdk_util.b == NULL) {
+               _E("Failed to create bundle");
+               return -1;
        }
 
-       if (caller_pid) {
-               sdk_util.caller = strdup(caller_pid);
-               if (sdk_util.caller == NULL) {
-                       _E("out of memory"); /* LCOV_EXCL_LINE */
-                       __free_sdk_util(); /* LCOV_EXCL_LINE */
-                       return -1; /* LCOV_EXCL_LINE */
-               }
+       r = aul_debug_info_set(data, sdk_util.b);
+       if (r != AUL_R_OK) {
+               _E("Failed to set debug info");
+               bundle_free(sdk_util.b);
+               sdk_util.b = NULL;
+               return -1;
        }
 
        return 0;