diff options
author | Sung-jae Park <nicesj.park@samsung.com> | 2013-03-04 10:46:42 +0000 |
---|---|---|
committer | Sung-jae Park <nicesj.park@samsung.com> | 2013-03-04 10:46:42 +0000 |
commit | 6219e95e44551b18781c96f30ea7c60d1787f454 (patch) | |
tree | 673026f0ed78195a278177ee8b2dc6d3bddad5a5 | |
parent | 7e3f946d3dd7a3cdee72110fe3e3d379c1374746 (diff) | |
download | data-provider-master-6219e95e44551b18781c96f30ea7c60d1787f454.tar.gz data-provider-master-6219e95e44551b18781c96f30ea7c60d1787f454.tar.bz2 data-provider-master-6219e95e44551b18781c96f30ea7c60d1787f454.zip |
Add pd_move event is added
pd create / lb create & pd,show / lb,show sequence is updated
Change-Id: If0e1ec3c8f4434fad5698e0e7cb6557a22667b1f
-rw-r--r-- | packaging/data-provider-master.spec | 2 | ||||
-rw-r--r-- | src/instance.c | 14 | ||||
-rw-r--r-- | src/script_handler.c | 8 | ||||
-rw-r--r-- | src/server.c | 68 |
4 files changed, 77 insertions, 15 deletions
diff --git a/packaging/data-provider-master.spec b/packaging/data-provider-master.spec index e8520e5..c7e104b 100644 --- a/packaging/data-provider-master.spec +++ b/packaging/data-provider-master.spec @@ -1,6 +1,6 @@ Name: data-provider-master Summary: Master service provider for liveboxes. -Version: 0.17.0 +Version: 0.17.1 Release: 1 Group: framework/livebox License: Flora License diff --git a/src/instance.c b/src/instance.c index 06149c6..fc66287 100644 --- a/src/instance.c +++ b/src/instance.c @@ -867,9 +867,6 @@ static void reactivate_cb(struct slave_node *slave, const struct packet *packet, if (pd_type == PD_TYPE_SCRIPT && inst->pd.canvas.script && inst->pd.is_opened_for_reactivate) { double x, y; - - instance_slave_get_pd_pos(inst, &x, &y); - /*! * \note * We should to send a request to open a PD to slave. @@ -878,6 +875,7 @@ static void reactivate_cb(struct slave_node *slave, const struct packet *packet, * To do that, send open request from here. */ ret = instance_slave_open_pd(inst, NULL); + instance_slave_get_pd_pos(inst, &x, &y); /*! * \note @@ -1153,10 +1151,12 @@ static int pd_script_close_cb(struct client_node *client, void *inst) { int ret; + ret = script_handler_unload(instance_pd_script(inst), 1); + DbgPrint("Unload script: %d\n", ret); + ret = instance_slave_close_pd(inst, client); DbgPrint("Forcely close the PD ret: %d\n", ret); - ret = script_handler_unload(instance_pd_script(inst), 1); return -1; /* Delete this callback */ } @@ -1953,6 +1953,7 @@ HAPI int instance_signal_emit(struct inst_info *inst, const char *signal, const return -EFAULT; } + DbgPrint("Signal emit: %s(%s), %s(%s), %lf, %lf, %lf, %lf, %lfx%lf, %d\n", pkgname, id, signal, part, sx, sy, ex, ey, x, y, down); ret = slave_rpc_request_only(slave, pkgname, packet, 0); return ret; } @@ -2435,6 +2436,7 @@ HAPI int instance_slave_open_pd(struct inst_info *inst, struct client_node *clie } inst->pd.owner = client; + DbgPrint("pd,show event is sent\n"); return ret; } @@ -2504,7 +2506,7 @@ HAPI int instance_client_pd_created(struct inst_info *inst, int status) break; } - inst->pd.need_to_send_close_event = 1; + inst->pd.need_to_send_close_event = (status == 0); packet = packet_create_noack("pd_created", "sssiii", package_name(inst->info), inst->id, buf_id, @@ -2516,7 +2518,7 @@ HAPI int instance_client_pd_created(struct inst_info *inst, int status) ret = CLIENT_SEND_EVENT(inst, packet); - if (inst->pd.pended_update_cnt) { + if (inst->pd.need_to_send_close_event && inst->pd.pended_update_cnt) { DbgPrint("Apply pended desc(%d) - %s\n", inst->pd.pended_update_cnt, inst->pd.pended_update_desc); instance_pd_updated_by_instance(inst, inst->pd.pended_update_desc); inst->pd.pended_update_cnt = 0; diff --git a/src/script_handler.c b/src/script_handler.c index 116c220..2fe88da 100644 --- a/src/script_handler.c +++ b/src/script_handler.c @@ -265,6 +265,8 @@ HAPI int script_handler_load(struct script_info *info, int is_pd) return -EFAULT; } info->loaded = 1; + script_signal_emit(e, util_uri_to_path(instance_id(info->inst)), + is_pd ? "pd,show" : "lb,show", 0.0f, 0.0f, 0.0f, 0.0f); } else { ErrPrint("Evas: (nil) %dx%d\n", info->w, info->h); } @@ -275,9 +277,6 @@ HAPI int script_handler_load(struct script_info *info, int is_pd) ecore_evas_activate(info->ee); fb_sync(info->fb); - if (e) - script_signal_emit(e, util_uri_to_path(instance_id(info->inst)), - is_pd ? "pd,show" : "lb,show", 0.0f, 0.0f, 0.0f, 0.0f); return 0; } @@ -300,7 +299,8 @@ HAPI int script_handler_unload(struct script_info *info, int is_pd) e = script_handler_evas(info); if (e) { - script_signal_emit(e, util_uri_to_path(instance_id(info->inst)), is_pd ? "pd,hide" : "lb,hide", 0.0f, 0.0f, 0.0f, 0.0f); + script_signal_emit(e, util_uri_to_path(instance_id(info->inst)), + is_pd ? "pd,hide" : "lb,hide", 0.0f, 0.0f, 0.0f, 0.0f); if (info->port->unload(info->port_data, e) < 0) ErrPrint("Failed to unload script object. but go ahead\n"); evas_event_callback_del(e, EVAS_CALLBACK_RENDER_POST, render_post_cb); diff --git a/src/server.c b/src/server.c index 85a7f28..c22c399 100644 --- a/src/server.c +++ b/src/server.c @@ -869,6 +869,8 @@ static struct packet *client_pd_mouse_down(pid_t pid, int handle, const struct p goto out; } + DbgPrint("(%dx%d) - (%lfx%lf)\n", w, h, x, y); + /*! * \NOTE: * Trust the package name which are sent by the client. @@ -984,6 +986,7 @@ static struct packet *client_pd_mouse_up(pid_t pid, int handle, const struct pac goto out; } + DbgPrint("(%dx%d) - (%lfx%lf)\n", w, h, x, y); /*! * \NOTE: * Trust the package name which are sent by the client. @@ -1099,6 +1102,7 @@ static struct packet *client_pd_mouse_move(pid_t pid, int handle, const struct p goto out; } + DbgPrint("(%dx%d) - (%lfx%lf)\n", w, h, x, y); /*! * \NOTE: * Trust the package name which are sent by the client. @@ -3495,6 +3499,57 @@ static Eina_Bool lazy_pd_destroyed_cb(void *data) return ECORE_CALLBACK_CANCEL; } +static struct packet *client_pd_move(pid_t pid, int handle, const struct packet *packet) /* pkgname, id, x, y */ +{ + struct client_node *client; + struct inst_info *inst; + const char *pkgname; + const char *id; + double x = 0.0f; + double y = 0.0f; + int ret; + + client = client_find_by_pid(pid); + if (!client) { + ErrPrint("Client %d is not exists\n", pid); + ret = -ENOENT; + goto out; + } + + ret = packet_get(packet, "ssdd", &pkgname, &id, &x, &y); + if (ret != 4) { + ErrPrint("Parameter is not correct\n"); + ret = -EINVAL; + goto out; + } + + DbgPrint("pid[%d] pkgname[%s] id[%s] %lfx%lf\n", pid, pkgname, id, x, y); + + inst = package_find_instance_by_id(pkgname, id); + if (!inst) + ret = -ENOENT; + else if (package_is_fault(instance_package(inst))) + ret = -EFAULT; + else if (package_pd_type(instance_package(inst)) == PD_TYPE_BUFFER) { + instance_slave_set_pd_pos(inst, x, y); + ret = instance_signal_emit(inst, + "pd,move", util_uri_to_path(instance_id(inst)), + 0.0, 0.0, 0.0, 0.0, x, y, 0); + } else if (package_pd_type(instance_package(inst)) == PD_TYPE_SCRIPT) { + instance_slave_set_pd_pos(inst, x, y); + script_handler_update_pointer(instance_pd_script(inst), x, y, 0); + ret = instance_signal_emit(inst, + "pd,move", util_uri_to_path(instance_id(inst)), + 0.0, 0.0, 0.0, 0.0, x, y, 0); + } else { + ErrPrint("Invalid PD type\n"); + ret = -EINVAL; + } +out: + DbgPrint("Update PD position: %lfx%lf (%d)\n", x, y, ret); + return NULL; +} + static struct packet *client_create_pd(pid_t pid, int handle, const struct packet *packet) /* pid, pkgname, filename, ret */ { struct client_node *client; @@ -3559,8 +3614,8 @@ static struct packet *client_create_pd(pid_t pid, int handle, const struct packe * so we can hanle it later. */ instance_slave_set_pd_pos(inst, x, y); - ret = instance_slave_open_pd(inst, client); script_handler_update_pointer(instance_pd_script(inst), x, y, 0); + ret = instance_slave_open_pd(inst, client); ret = script_handler_load(instance_pd_script(inst), 1); /*! @@ -3577,6 +3632,8 @@ static struct packet *client_create_pd(pid_t pid, int handle, const struct packe inst = instance_ref(inst); /* To guarantee the inst */ if (!ecore_timer_add(DELAY_TIME, lazy_pd_created_cb, inst)) instance_unref(inst); + } else { + instance_client_pd_created(inst, ret); } } else { ErrPrint("Invalid PD TYPE\n"); @@ -3629,7 +3686,7 @@ static struct packet *client_destroy_pd(pid_t pid, int handle, const struct pack else if (package_pd_type(instance_package(inst)) == PD_TYPE_BUFFER) { ret = instance_signal_emit(inst, "pd,hide", util_uri_to_path(instance_id(inst)), - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0); + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0); ret = instance_slave_close_pd(inst, client); /*! @@ -3641,9 +3698,8 @@ static struct packet *client_destroy_pd(pid_t pid, int handle, const struct pack */ } else if (package_pd_type(instance_package(inst)) == PD_TYPE_SCRIPT) { - ret = instance_slave_close_pd(inst, client); - ret = script_handler_unload(instance_pd_script(inst), 1); + ret = instance_slave_close_pd(inst, client); /*! * \note @@ -5272,6 +5328,10 @@ static struct method s_client_table[] = { .handler = client_create_pd, /* pid, pkgname, filename, ret */ }, { + .cmd = "pd_move", + .handler = client_pd_move, /* pkgname, id, x, y */ + }, + { .cmd = "destroy_pd", .handler = client_destroy_pd, /* pid, pkgname, filename, ret */ }, |