diff options
author | Hyunho Kang <hhstark.kang@samsung.com> | 2016-10-12 18:02:45 +0900 |
---|---|---|
committer | Hyunho Kang <hhstark.kang@samsung.com> | 2016-10-13 00:27:39 +0900 |
commit | a4c44cf0edd2f1a77fc00faac8994945c17f2aa1 (patch) | |
tree | cd78a9d83ecd4814e34b8f51fc2a432f4a8d354d /src | |
parent | b785d45bfabff7d2fb5c9e7bc4a13b0348056614 (diff) | |
download | widget-service-a4c44cf0edd2f1a77fc00faac8994945c17f2aa1.tar.gz widget-service-a4c44cf0edd2f1a77fc00faac8994945c17f2aa1.tar.bz2 widget-service-a4c44cf0edd2f1a77fc00faac8994945c17f2aa1.zip |
Fix widget_service_chage_period instance exist logic
Check instance exist with amd if local check fail
Change-Id: I7762d936839e9bb0504ceefcf6858ce5d8e2190d
Signed-off-by: Hyunho Kang <hhstark.kang@samsung.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/widget_instance.c | 10 | ||||
-rw-r--r-- | src/widget_service.c | 42 |
2 files changed, 38 insertions, 14 deletions
diff --git a/src/widget_instance.c b/src/widget_instance.c index 7ed1451..fe72f6a 100644 --- a/src/widget_instance.c +++ b/src/widget_instance.c @@ -939,14 +939,11 @@ EAPI int widget_instance_get_period(widget_instance_h instance, double *period) return 0; } -EAPI int widget_instance_change_period(widget_instance_h instance, double period) +EAPI int widget_instance_change_period(const char *widget_id, const char *instance_id, double period) { int ret; bundle *b; - if (!instance) - return -1; - b = bundle_create(); if (!b) { _E("out of memory"); @@ -954,9 +951,8 @@ EAPI int widget_instance_change_period(widget_instance_h instance, double period } bundle_add_byte(b, WIDGET_K_PERIOD, &period, sizeof(double)); - - ret = __send_aul_cmd(instance, "period", b); - + bundle_add_str(b, WIDGET_K_OPERATION, "period"); + ret = aul_widget_instance_update(widget_id, instance_id, b); bundle_free(b); return ret; diff --git a/src/widget_service.c b/src/widget_service.c index 3922b94..48ec538 100644 --- a/src/widget_service.c +++ b/src/widget_service.c @@ -56,6 +56,12 @@ struct widget_info_s { bool is_mainapp; }; +struct widget_instance_info_s { + int period; + bool exists; + const char *instance_id; +}; + static GList *lifecycle_cbs; static bool _is_resolution_loaded = false; @@ -496,9 +502,25 @@ static int _get_widget_supported_sizes(const char *widget_id, uid_t uid, return WIDGET_ERROR_NONE; } +static int _instance_cb(const char *widget_id, const char *instance_id, void *data) +{ + int ret; + struct widget_instance_info_s *instance_info = (struct widget_instance_info_s *)data; + + _D("widget_id %s, instance_id %s", widget_id, instance_id); + if (strcmp(instance_info->instance_id, instance_id) == 0) { + ret = widget_instance_change_period(widget_id, instance_id, instance_info->period); + _D("ret %d ", ret); + if (ret > 0) + instance_info->exists = true; + } + return WIDGET_ERROR_NONE; +} + EAPI int widget_service_change_period(const char *pkgname, const char *id, double period) { widget_instance_h instance; + struct widget_instance_info_s instance_info; int ret; if (!_is_widget_feature_enabled()) { @@ -512,16 +534,22 @@ EAPI int widget_service_change_period(const char *pkgname, const char *id, doubl } instance = widget_instance_get_instance(pkgname, id); - if (!instance) { - _E("instance not exists or out of bound(package)"); - return WIDGET_ERROR_PERMISSION_DENIED; + instance_info.instance_id = id; + instance_info.exists = false; + instance_info.period = period; + ret = widget_service_get_widget_instance_list(pkgname, _instance_cb, &instance_info); + _D("get list ret %d, %d", ret, instance_info.exists); + if (ret == 0 || !instance_info.exists) { + _E("instance not exists or out of bound(package)"); + return WIDGET_ERROR_PERMISSION_DENIED; + } + ret = WIDGET_ERROR_NONE; + } else { + ret = widget_instance_change_period(pkgname, id, period); + widget_instance_unref(instance); } - ret = widget_instance_change_period(instance, period); - - widget_instance_unref(instance); - return ret; } |