Fix the bug of faulted package handler (wayland too).
authorSung-jae Park <nicesj.park@samsung.com>
Thu, 6 Mar 2014 15:21:29 +0000 (00:21 +0900)
committerSung-jae Park <nicesj.park@samsung.com>
Fri, 7 Mar 2014 02:05:20 +0000 (11:05 +0900)
If a package is faulted,
Destroy all instances of the package.

Add wayland.conf file install script

Change-Id: I271f9da19d5cb92eddb836802f1f81d5d73e17d9

data/wayland.conf.ini [new file with mode: 0644]
include/package.h
packaging/data-provider-master.spec
src/package.c
src/server.c

diff --git a/data/wayland.conf.ini b/data/wayland.conf.ini
new file mode 100644 (file)
index 0000000..c9b95c7
--- /dev/null
@@ -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]
index ec9c172..dd5d3f6 100644 (file)
@@ -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 */
index 9f128f9..66560a1 100755 (executable)
@@ -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
index d262599..c7377ce 100644 (file)
@@ -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) {
index 1a336c7..129bf97 100644 (file)
@@ -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);
                        }
                }