From 0af27605b15c4d1d4da9e3cf28cc144ac9d2c990 Mon Sep 17 00:00:00 2001 From: Sung-jae Park Date: Fri, 7 Mar 2014 00:21:29 +0900 Subject: [PATCH] Fix the bug of faulted package handler (wayland too). If a package is faulted, Destroy all instances of the package. Add wayland.conf file install script Change-Id: I271f9da19d5cb92eddb836802f1f81d5d73e17d9 --- data/wayland.conf.ini | 37 +++++++++++++++++++++++++++++++++++++ include/package.h | 2 +- packaging/data-provider-master.spec | 3 ++- src/package.c | 6 ++++-- src/server.c | 14 ++++++-------- 5 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 data/wayland.conf.ini diff --git a/data/wayland.conf.ini b/data/wayland.conf.ini new file mode 100644 index 0000000..c9b95c7 --- /dev/null +++ b/data/wayland.conf.ini @@ -0,0 +1,37 @@ +base_width=720 +base_height=1280 +minimum_period=1.0 +#script=edje +#default_abi=c +#default_group=disclosure +default_period=-1.0 +default_packet_time=0.0001 +#default_content=default +minimum_space=104857600 +#replace_tag=/APPID/ +slave_ttl=30.0 +slave_activate_time=30.0 +slave_relaunch_time=3.0 +slave_relaunch_count=3 +max_log_line=1000 +max_log_file=3 +sqilte_flush_max=1048576 +#db_path=/opt/dbspace/.livebox.db +#share_path=/opt/usr/share/live_magazine/ +log_path=/tmp/.dbox.service +#always_path=/opt/usr/share/live_magazine/always +#reader_path=/opt/usr/share/live_magazine/reader +#script_port_path=/usr/share/data-provider-master/plugin-script/ +ping_interval=240.0 +slave_max_load=30 +use_sw_backend=false +provider_method=shm +debug_mode=false +overwrite_content=false +com_core_thread=true +use_xmonitor=false +#input=/dev/input/event2 +pd_request_timeout=5.0 +premultiplied=1 +#emergency_disk=source=tmpfs;type=tmpfs;option=size=6M +#services=[livebox],[shortcut],[notification],[utility],[badge],[file] diff --git a/include/package.h b/include/package.h index ec9c172..dd5d3f6 100644 --- a/include/package.h +++ b/include/package.h @@ -126,6 +126,6 @@ extern int package_init(void); extern int package_fini(void); extern int package_is_enabled(const char *appid); -extern int package_faulted(struct pkg_info *info); +extern int package_faulted(struct pkg_info *info, int broadcast); /* End of a file */ diff --git a/packaging/data-provider-master.spec b/packaging/data-provider-master.spec index 9f128f9..66560a1 100755 --- a/packaging/data-provider-master.spec +++ b/packaging/data-provider-master.spec @@ -2,7 +2,7 @@ Name: data-provider-master Summary: Master service provider for liveboxes -Version: 0.40.0 +Version: 0.40.1 Release: 1 Group: HomeTF/Livebox License: Flora @@ -81,6 +81,7 @@ export LIVEBOX_SHM=private %if %{with wayland} export WAYLAND_SUPPORT=On export X11_SUPPORT=Off +export LIVEBOX_SHM=wayland %else export WAYLAND_SUPPORT=Off export X11_SUPPORT=On diff --git a/src/package.c b/src/package.c index d262599..c7377ce 100644 --- a/src/package.c +++ b/src/package.c @@ -1572,7 +1572,7 @@ HAPI int package_is_enabled(const char *appid) return enabled == true; } -HAPI int package_faulted(struct pkg_info *pkg) +HAPI int package_faulted(struct pkg_info *pkg, int broadcast) { Eina_List *l; Eina_List *n; @@ -1587,7 +1587,9 @@ HAPI int package_faulted(struct pkg_info *pkg) /* Emulated fault routine */ // (void)package_set_fault_info(pkg, util_timestamp(), slave_name(slave), __func__); - fault_broadcast_info(package_name(pkg), slave_name(slave), __func__); + if (broadcast) { + fault_broadcast_info(package_name(pkg), slave_name(slave), __func__); + } DbgPrint("package: %s (forucely faulted %s)\n", package_name(pkg), slave_name(slave)); EINA_LIST_FOREACH_SAFE(pkg->inst_list, l, n, inst) { diff --git a/src/server.c b/src/server.c index 1a336c7..129bf97 100644 --- a/src/server.c +++ b/src/server.c @@ -5986,7 +5986,7 @@ out: static struct packet *slave_faulted(pid_t pid, int handle, const struct packet *packet) { struct slave_node *slave; - struct inst_info *inst; + struct pkg_info *pkg; const char *pkgname; const char *id; const char *func; @@ -6007,13 +6007,11 @@ static struct packet *slave_faulted(pid_t pid, int handle, const struct packet * ret = fault_info_set(slave, pkgname, id, func); DbgPrint("Slave Faulted: %s (%d)\n", slave_name(slave), ret); - inst = package_find_instance_by_id(pkgname, id); - if (!inst) { - DbgPrint("There is a no such instance(%s)\n", id); - } else if (instance_state(inst) == INST_DESTROYED) { - ErrPrint("Instance(%s) is already destroyed\n", id); + pkg = package_find(pkgname); + if (!pkg) { + ErrPrint("There is no package info found: %s\n", pkgname); } else { - ret = instance_destroy(inst, INSTANCE_DESTROY_FAULT); + package_faulted(pkg, 0); } out: @@ -7427,7 +7425,7 @@ static struct packet *liveinfo_pkg_ctrl(pid_t pid, int handle, const struct pack if (!pkg) { liveinfo_set_data(info, (void *)EFAULT); } else { - (void)package_faulted(pkg); + (void)package_faulted(pkg, 1); liveinfo_set_data(info, (void *)0); } } -- 2.7.4