summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHyunho Kang <hhstark.kang@samsung.com>2016-10-12 18:02:45 +0900
committerHyunho Kang <hhstark.kang@samsung.com>2016-10-13 00:27:39 +0900
commita4c44cf0edd2f1a77fc00faac8994945c17f2aa1 (patch)
treecd78a9d83ecd4814e34b8f51fc2a432f4a8d354d /src
parentb785d45bfabff7d2fb5c9e7bc4a13b0348056614 (diff)
downloadwidget-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.c10
-rw-r--r--src/widget_service.c42
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;
}