int widget_instance_get_instance_list(const char *widget_id, widget_instance_list_cb cb, void *data);
void widget_instance_unref(widget_instance_h instance);
widget_instance_h widget_instance_ref(widget_instance_h instance);
-int widget_instance_change_period(widget_instance_h instance, double period);
+int widget_instance_change_period(const char *widget_id, const char *instance_id, double period);
int widget_instance_trigger_update(widget_instance_h instance, const char *content_info, int force);
int widget_instance_listen_event(widget_instance_event_cb cb, void *data);
int widget_instance_unlisten_event(widget_instance_event_cb cb);
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");
}
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;
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;
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()) {
}
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;
}