Add missed accessibility event path
authorSung-jae Park <nicesj.park@samsung.com>
Fri, 12 Apr 2013 04:19:38 +0000 (13:19 +0900)
committerSung-jae Park <nicesj.park@samsung.com>
Fri, 12 Apr 2013 04:20:17 +0000 (13:20 +0900)
Add unhighlight accessiblity event.
Update version
provider_buffer related function should validate the parameters.

Change-Id: Ib3f7564788920a06e179fb82a37977bf6e1ef805

include/provider.h
packaging/libprovider.spec
src/provider.c
src/provider_buffer.c

index 6e31e27..4ad696d 100644 (file)
@@ -46,6 +46,7 @@ enum access_event {
        ACCESS_ACTIVATE,
        ACCESS_VALUE_CHANGE,
        ACCESS_SCROLL,
+       ACCESS_UNHIGHLIGHT,
 };
 
 struct event_arg {
index 2d703e5..85510bb 100644 (file)
@@ -1,6 +1,6 @@
 Name: libprovider
 Summary: Library for developing the livebox service provider.
-Version: 0.8.0
+Version: 0.8.1
 Release: 1
 Group: HomeTF/Livebox
 License: Flora License
index c59f43b..f92a926 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <dlog.h>
 #include <livebox-errno.h>
+#include <livebox-service.h> /* LB_ACCESS_STATUS_XXXX */
 
 #include "dlist.h"
 #include "util.h"
@@ -604,6 +605,8 @@ struct packet *master_pd_access_value_change(pid_t pid, int handle, const struct
        arg.info.pd_access.event = ACCESS_VALUE_CHANGE;
        if (s_info.table.pd_access)
                (void)s_info.table.pd_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -625,6 +628,31 @@ struct packet *master_pd_access_scroll(pid_t pid, int handle, const struct packe
        arg.info.pd_access.event = ACCESS_SCROLL;
        if (s_info.table.pd_access)
                (void)s_info.table.pd_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
+
+out:
+       return NULL;
+}
+
+struct packet *master_pd_access_unhighlight(pid_t pid, int handle, const struct packet *packet)
+{
+       struct event_arg arg;
+       double timestamp;
+       int ret;
+
+       ret = packet_get(packet, "ssdii", &arg.pkgname, &arg.id, &timestamp, &arg.info.pd_access.x, &arg.info.pd_access.y);
+       if (ret != 5) {
+               ErrPrint("Invalid packet\n");
+               goto out;
+       }
+
+       arg.type = EVENT_PD_ACCESS;
+       arg.info.pd_access.event = ACCESS_UNHIGHLIGHT;
+       if (s_info.table.pd_access)
+               (void)s_info.table.pd_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -648,6 +676,8 @@ struct packet *master_pd_access_hl(pid_t pid, int handle, const struct packet *p
        arg.info.pd_access.event = ACCESS_HIGHLIGHT;
        if (s_info.table.pd_access)
                (void)s_info.table.pd_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -671,6 +701,8 @@ struct packet *master_pd_access_hl_prev(pid_t pid, int handle, const struct pack
        arg.info.pd_access.event = ACCESS_HIGHLIGHT_PREV;
        if (s_info.table.pd_access)
                (void)s_info.table.pd_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -694,6 +726,8 @@ struct packet *master_pd_access_hl_next(pid_t pid, int handle, const struct pack
        arg.info.pd_access.event = ACCESS_HIGHLIGHT_NEXT;
        if (s_info.table.pd_access)
                (void)s_info.table.pd_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -717,6 +751,34 @@ struct packet *master_pd_access_activate(pid_t pid, int handle, const struct pac
        arg.info.pd_access.event = ACCESS_ACTIVATE;
        if (s_info.table.pd_access)
                (void)s_info.table.pd_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
+
+out:
+       return NULL;
+}
+
+struct packet *master_lb_access_unhighlight(pid_t pid, int handle, const struct packet *packet)
+{
+       struct event_arg arg;
+       double timestamp;
+       int ret;
+
+       ret = packet_get(packet, "ssdii", &arg.pkgname, &arg.id,
+                                       &timestamp,
+                                       &arg.info.lb_access.x, &arg.info.lb_access.y);
+
+       if (ret != 5) {
+               ErrPrint("Invalid packet\n");
+               goto out;
+       }
+
+       arg.type = EVENT_LB_ACCESS;
+       arg.info.lb_access.event = ACCESS_UNHIGHLIGHT;
+       if (s_info.table.lb_access)
+               (void)s_info.table.lb_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -740,6 +802,8 @@ struct packet *master_lb_access_hl(pid_t pid, int handle, const struct packet *p
        arg.info.lb_access.event = ACCESS_HIGHLIGHT;
        if (s_info.table.lb_access)
                (void)s_info.table.lb_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -763,6 +827,8 @@ struct packet *master_lb_access_hl_prev(pid_t pid, int handle, const struct pack
        arg.info.lb_access.event = ACCESS_HIGHLIGHT_PREV;
        if (s_info.table.lb_access)
                (void)s_info.table.lb_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -786,6 +852,8 @@ struct packet *master_lb_access_hl_next(pid_t pid, int handle, const struct pack
        arg.info.lb_access.event = ACCESS_HIGHLIGHT_NEXT;
        if (s_info.table.lb_access)
                (void)s_info.table.lb_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -809,6 +877,8 @@ struct packet *master_lb_access_value_change(pid_t pid, int handle, const struct
        arg.info.lb_access.event = ACCESS_VALUE_CHANGE;
        if (s_info.table.lb_access)
                (void)s_info.table.lb_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -832,6 +902,8 @@ struct packet *master_lb_access_scroll(pid_t pid, int handle, const struct packe
        arg.info.lb_access.event = ACCESS_SCROLL;
        if (s_info.table.lb_access)
                (void)s_info.table.lb_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -855,6 +927,8 @@ struct packet *master_lb_access_activate(pid_t pid, int handle, const struct pac
        arg.info.lb_access.event = ACCESS_ACTIVATE;
        if (s_info.table.lb_access)
                (void)s_info.table.lb_access(&arg, s_info.data);
+       else
+               (void)provider_send_access_status(arg.pkgname, arg.id, LB_ACCESS_STATUS_ERROR);
 
 out:
        return NULL;
@@ -1015,6 +1089,10 @@ static struct method s_table[] = {
                .cmd = "pd_access_value_change",
                .handler = master_pd_access_value_change,
        },
+       {
+               .cmd = "pd_access_unhighlight",
+               .handler = master_pd_access_unhighlight,
+       },
 
        {
                .cmd = "lb_access_hl",
@@ -1044,6 +1122,10 @@ static struct method s_table[] = {
                .cmd = "update_mode",
                .handler = master_update_mode,
        },
+       {
+               .cmd = "lb_access_unhighlight",
+               .handler = master_lb_access_unhighlight,
+       },
 
        {
                .cmd = NULL,
index 2180cb7..632ae4a 100644 (file)
@@ -429,6 +429,9 @@ EAPI unsigned long provider_buffer_pixmap_id(struct livebox_buffer *info)
 
 EAPI int provider_buffer_pixmap_is_support_hw(struct livebox_buffer *info)
 {
+       if (!info)
+               return LB_STATUS_ERROR_INVALID;
+
        return fb_has_gem(info->fb);
 }
 
@@ -442,7 +445,7 @@ EAPI int provider_buffer_pixmap_create_hw(struct livebox_buffer *info)
 
 EAPI int provider_buffer_pixmap_destroy_hw(struct livebox_buffer *info)
 {
-       if (!fb_has_gem(info->fb))
+       if (!info || !fb_has_gem(info->fb))
                return LB_STATUS_ERROR_INVALID;
 
        return fb_destroy_gem(info->fb);
@@ -452,7 +455,7 @@ EAPI void *provider_buffer_pixmap_hw_addr(struct livebox_buffer *info)
 {
        void *addr;
 
-       if (!fb_has_gem(info->fb))
+       if (!info || !fb_has_gem(info->fb))
                return NULL;
 
        addr = fb_acquire_gem(info->fb);
@@ -466,6 +469,9 @@ EAPI int provider_buffer_pre_render(struct livebox_buffer *info)
 {
        int ret = LB_STATUS_SUCCESS;
 
+       if (!info)
+               return LB_STATUS_ERROR_INVALID;
+
        if (fb_has_gem(info->fb))
                ret = fb_acquire_gem(info->fb) ? 0 : -EFAULT;
 
@@ -476,6 +482,9 @@ EAPI int provider_buffer_post_render(struct livebox_buffer *info)
 {
        int ret = LB_STATUS_SUCCESS;
 
+       if (!info)
+               return LB_STATUS_ERROR_INVALID;
+
        if (fb_has_gem(info->fb))
                ret = fb_release_gem(info->fb);