Fix the invalid error code of accessibility CB.
[apps/livebox/livebox-viewer.git] / src / livebox.c
index 30ab8ef..30b5c04 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Copyright 2013  Samsung Electronics Co., Ltd
  *
- * Licensed under the Flora License, Version 1.0 (the "License");
+ * Licensed under the Flora License, Version 1.1 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- * http://floralicense.org
+ * http://floralicense.org/license/
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -58,7 +58,7 @@ static struct info {
        .fault_list = NULL,
        .init_count = 0,
        .prevent_overwrite = 0,
-       .event_filter = 0.02f,
+       .event_filter = 0.01f,
 };
 
 struct cb_info {
@@ -160,7 +160,7 @@ static void update_mode_cb(struct livebox *handler, const struct packet *result,
        }
 
        if (ret < 0) {
-               DbgPrint("Resize request is failed: %d\n", ret);
+               ErrPrint("Resize request is failed: %d\n", ret);
                goto errout;
        }
 
@@ -176,13 +176,6 @@ errout:
 static void resize_cb(struct livebox *handler, const struct packet *result, void *data)
 {
        int ret;
-       struct cb_info *info = data;
-       ret_cb_t cb;
-       void *cbdata;
-
-       cb = info->cb;
-       cbdata = info->data;
-       destroy_cb_info(info);
 
        if (!result) {
                ret = LB_STATUS_ERROR_FAULT;
@@ -203,11 +196,10 @@ static void resize_cb(struct livebox *handler, const struct packet *result, void
         * after this request.
         */
        if (ret < 0) {
-               DbgPrint("Resize request is failed: %d\n", ret);
+               ErrPrint("Resize request is failed: %d\n", ret);
                goto errout;
        }
 
-       DbgPrint("Resize request is successfully sent\n");
        return;
 
 errout:
@@ -279,7 +271,6 @@ static void period_ret_cb(struct livebox *handler, const struct packet *result,
        if (ret < 0)
                goto errout;
 
-       DbgPrint("Succeed to send period change request, waiting result\n");
        return;
 
 errout:
@@ -308,7 +299,6 @@ static void del_ret_cb(struct livebox *handler, const struct packet *result, voi
        }
 
        if (ret == 0) {
-               DbgPrint("Returns %d (waiting deleted event)\n", ret);
                handler->deleted_cb = cb;
                handler->deleted_cbdata = cbdata;
        } else if (cb) {
@@ -344,7 +334,6 @@ static void new_ret_cb(struct livebox *handler, const struct packet *result, voi
        }
 
        if (ret >= 0) {
-               DbgPrint("new request is sent, just waiting the created event\n");
                handler->created_cb = cb;
                handler->created_cbdata = cbdata;
 
@@ -379,7 +368,7 @@ static void pd_create_cb(struct livebox *handler, const struct packet *result, v
        }
 
        if (ret < 0) {
-               DbgPrint("Failed to create a PD\n");
+               ErrPrint("Failed to create a PD[%d]\n", ret);
                goto errout;
        }
 
@@ -425,19 +414,17 @@ static void pd_destroy_cb(struct livebox *handler, const struct packet *result,
        destroy_cb_info(info);
 
        if (!result) {
-               DbgPrint("Result is NIL (may connection lost)\n");
+               ErrPrint("Result is NIL (may connection lost)\n");
                ret = LB_STATUS_ERROR_FAULT;
        } else if (packet_get(result, "i", &ret) != 1) {
-               DbgPrint("Invalid parameter\n");
+               ErrPrint("Invalid parameter\n");
                ret = LB_STATUS_ERROR_INVALID;
        }
 
        if (ret == 0) {
-               DbgPrint("PD Destroyed callback prepared\n");
                handler->pd_destroyed_cb = cb;
                handler->pd_destroyed_cbdata = cbdata;
        } else if (cb) {
-               DbgPrint("PD is not desroyed (forcely reset, pd flag)\n");
                handler->is_pd_created = 0;
                cb(handler, ret, cbdata);
        }
@@ -460,8 +447,6 @@ static void delete_cluster_cb(struct livebox *handler, const struct packet *resu
                ret = LB_STATUS_ERROR_INVALID;
        }
 
-       DbgPrint("Delete category returns: %d\n", ret);
-
        if (cb)
                cb(handler, ret, cbdata);
 }
@@ -482,8 +467,6 @@ static void delete_category_cb(struct livebox *handler, const struct packet *res
        else if (packet_get(result, "i", &ret) != 1)
                ret = LB_STATUS_ERROR_INVALID;
 
-       DbgPrint("Delete category returns: %d\n", ret);
-
        if (cb)
                cb(handler, ret, cbdata);
 }
@@ -548,7 +531,6 @@ static void access_ret_cb(struct livebox *handler, const struct packet *result,
                goto errout;
        }
 
-       DbgPrint("Access event is successfully sent. waiting result\n");
        return;
 
 errout:
@@ -571,8 +553,6 @@ static int send_access_event(struct livebox *handler, const char *event, int x,
                return LB_STATUS_ERROR_FAULT;
        }
 
-       DbgPrint("Send: %dx%d\n", x, y);
-
        return master_rpc_async_request(handler, packet, 0, access_ret_cb, NULL);
 }
 
@@ -588,8 +568,6 @@ static int send_mouse_event(struct livebox *handler, const char *event, int x, i
                return LB_STATUS_ERROR_FAULT;
        }
 
-       DbgPrint("Send: %dx%d\n", x, y);
-
        return master_rpc_request_only(handler, packet);
 }
 
@@ -629,13 +607,13 @@ EAPI int livebox_init(void *disp)
 EAPI int livebox_fini(void)
 {
        if (s_info.init_count <= 0) {
-               DbgPrint("Didn't initialized\n");
+               ErrPrint("Doesn't initialized\n");
                return LB_STATUS_ERROR_INVALID;
        }
 
        s_info.init_count--;
        if (s_info.init_count > 0) {
-               DbgPrint("init count : %d\n", s_info.init_count);
+               ErrPrint("init count : %d\n", s_info.init_count);
                return LB_STATUS_SUCCESS;
        }
 
@@ -790,7 +768,6 @@ EAPI struct livebox *livebox_add_with_size(const char *pkgname, const char *cont
                return NULL;
        }
 
-       DbgPrint("Successfully sent a new request ([%lf] %s)\n", handler->timestamp, handler->pkgname);
        handler->state = CREATE;
        return lb_ref(handler);
 }
@@ -839,13 +816,10 @@ EAPI int livebox_set_period(struct livebox *handler, double period, ret_cb_t cb,
        if (!cb)
                cb = default_period_changed_cb;
 
-       handler->period_changed_cb = cb;
-       handler->period_cbdata = data;
-
        ret = master_rpc_async_request(handler, packet, 0, period_ret_cb, NULL);
-       if (ret < 0) {
-               handler->period_changed_cb = NULL;
-               handler->period_cbdata = NULL;
+       if (ret == LB_STATUS_SUCCESS) {
+               handler->period_changed_cb = cb;
+               handler->period_cbdata = data;
        }
 
        return ret;
@@ -914,6 +888,7 @@ EAPI void *livebox_unset_fault_handler(int (*cb)(enum livebox_fault_type, const
        dlist_foreach(s_info.fault_list, l, info) {
                if (info->handler == cb) {
                        void *data;
+
                        s_info.fault_list = dlist_remove(s_info.fault_list, l);
                        data = info->user_data;
                        free(info);
@@ -998,13 +973,10 @@ EAPI int livebox_set_update_mode(struct livebox *handler, int active_update, ret
        if (!cb)
                cb = default_update_mode_cb;
 
-       handler->update_mode_cb = cb;
-       handler->update_mode_cbdata = data;
-
        ret = master_rpc_async_request(handler, packet, 0, update_mode_cb, NULL);
-       if (ret < 0) {
-               handler->update_mode_cb = NULL;
-               handler->update_mode_cbdata = NULL;
+       if (ret == LB_STATUS_SUCCESS) {
+               handler->update_mode_cb = cb;
+               handler->update_mode_cbdata = data;
        }
 
        return ret;
@@ -1069,13 +1041,10 @@ EAPI int livebox_resize(struct livebox *handler, int type, ret_cb_t cb, void *da
        if (!cb)
                cb = default_lb_size_changed_cb;
 
-       handler->size_changed_cb = cb;
-       handler->size_cbdata = data;
-
        ret = master_rpc_async_request(handler, packet, 0, resize_cb, NULL);
-       if (ret < 0) {
-               handler->size_changed_cb = NULL;
-               handler->size_cbdata = NULL;
+       if (ret == LB_STATUS_SUCCESS) {
+               handler->size_changed_cb = cb;
+               handler->size_cbdata = data;
        }
 
        return ret;
@@ -1087,6 +1056,8 @@ EAPI int livebox_click(struct livebox *handler, double x, double y)
        double timestamp;
        int ret;
 
+       timestamp = util_timestamp();
+
        if (!handler) {
                ErrPrint("Handler is NIL\n");
                return LB_STATUS_ERROR_INVALID;
@@ -1098,34 +1069,33 @@ EAPI int livebox_click(struct livebox *handler, double x, double y)
        }
 
        if (handler->lb.auto_launch) {
-               DbgPrint("Auto-launch enabled: %s\n", handler->lb.auto_launch);
+               DbgPrint("AUTO_LAUNCH [%s]\n", handler->lb.auto_launch);
                if (aul_launch_app(handler->lb.auto_launch, NULL) < 0)
                        ErrPrint("Failed to launch app %s\n", handler->lb.auto_launch);
        }
 
-       timestamp = util_timestamp();
        packet = packet_create_noack("clicked", "sssddd", handler->pkgname, handler->id, "clicked", timestamp, x, y);
        if (!packet) {
                ErrPrint("Failed to build param\n");
                return LB_STATUS_ERROR_FAULT;
        }
 
+       DbgPrint("CLICKED: %lf\n", timestamp);
        ret = master_rpc_request_only(handler, packet);
-       DbgPrint("Click request: %d\n", ret);
 
        if (!handler->lb.mouse_event && (handler->lb.type == _LB_TYPE_BUFFER || handler->lb.type == _LB_TYPE_SCRIPT)) {
                int ret; /* Shadow variable */
                ret = send_mouse_event(handler, "lb_mouse_down", x * handler->lb.width, y * handler->lb.height);
                if (ret < 0)
-                       DbgPrint("Failed to send Down: %d\n", ret);
+                       ErrPrint("Failed to send Down: %d\n", ret);
 
                ret = send_mouse_event(handler, "lb_mouse_move", x * handler->lb.width, y * handler->lb.height);
                if (ret < 0)
-                       DbgPrint("Failed to send Move: %d\n", ret);
+                       ErrPrint("Failed to send Move: %d\n", ret);
 
                ret = send_mouse_event(handler, "lb_mouse_up", x * handler->lb.width, y * handler->lb.height);
                if (ret < 0)
-                       DbgPrint("Failed to send Up: %d\n", ret);
+                       ErrPrint("Failed to send Up: %d\n", ret);
        }
 
        return ret;
@@ -1200,13 +1170,11 @@ EAPI int livebox_create_pd_with_position(struct livebox *handler, double x, doub
        if (!cb)
                cb = default_pd_created_cb;
 
-       handler->pd_created_cb = cb;
-       handler->pd_created_cbdata = data;
-
+       DbgPrint("PERF_DBOX\n");
        ret = master_rpc_async_request(handler, packet, 0, pd_create_cb, NULL);
-       if (ret < 0) {
-               handler->pd_created_cb = NULL;
-               handler->pd_created_cbdata = NULL;
+       if (ret == LB_STATUS_SUCCESS) {
+               handler->pd_created_cb = cb;
+               handler->pd_created_cbdata = data;
        }
 
        return ret;
@@ -1227,7 +1195,7 @@ EAPI int livebox_move_pd(struct livebox *handler, double x, double y)
        }
 
        if (!handler->is_pd_created) {
-               DbgPrint("PD is not created\n");
+               ErrPrint("PD is not created\n");
                return LB_STATUS_ERROR_INVALID;
        }
 
@@ -1285,7 +1253,7 @@ EAPI int livebox_destroy_pd(struct livebox *handler, ret_cb_t cb, void *data)
                return LB_STATUS_ERROR_INVALID;
        }
 
-       if (!handler->is_pd_created) {
+       if (!handler->is_pd_created && !handler->pd_created_cb) {
                ErrPrint("PD is not created\n");
                return LB_STATUS_ERROR_INVALID;
        }
@@ -1367,8 +1335,11 @@ EAPI int livebox_access_event(struct livebox *handler, enum access_event_type ty
        case ACCESS_EVENT_ACTIVATE:
                strcpy(ptr, "_access_activate");
                break;
-       case ACCESS_EVENT_VALUE_CHANGE:
-               strcpy(ptr, "_access_value_change");
+       case ACCESS_EVENT_ACTION_DOWN:
+               strcpy(ptr, "_access_action_down");
+               break;
+       case ACCESS_EVENT_ACTION_UP:
+               strcpy(ptr, "_access_action_up");
                break;
        case ACCESS_EVENT_UNHIGHLIGHT:
                strcpy(ptr, "_access_unhighlight");
@@ -1389,13 +1360,10 @@ EAPI int livebox_access_event(struct livebox *handler, enum access_event_type ty
        if (!cb)
                cb = default_access_event_cb;
 
-       handler->access_event_cb = cb;
-       handler->access_event_cbdata = data;
-
        ret = send_access_event(handler, cmd, x * w, y * h);
-       if (ret < 0) {
-               handler->access_event_cb = NULL;
-               handler->access_event_cbdata = NULL;
+       if (ret == LB_STATUS_SUCCESS) {
+               handler->access_event_cb = cb;
+               handler->access_event_cbdata = data;
        }
 
        return ret;
@@ -1448,14 +1416,12 @@ EAPI int livebox_content_event(struct livebox *handler, enum content_event_type
                }
                *ptr++ = 'p';
                *ptr++ = 'd';
-       } else {
+       } else if (type & CONTENT_EVENT_LB_MASK) {
                int flag = 1;
 
                if (type & CONTENT_EVENT_MOUSE_MASK) {
-                       if (!handler->lb.mouse_event) {
-                               ErrPrint("Box is not support the mouse event\n");
+                       if (!handler->lb.mouse_event)
                                return LB_STATUS_ERROR_INVALID;
-                       }
 
                        if (!handler->lb.data.fb) {
                                ErrPrint("Handler is not valid\n");
@@ -1478,12 +1444,15 @@ EAPI int livebox_content_event(struct livebox *handler, enum content_event_type
                }
                *ptr++ = 'l';
                *ptr++ = 'b';
+       } else {
+               ErrPrint("Invalid event type\n");
+               return LB_STATUS_ERROR_INVALID;
        }
 
        /*!
         * Must be short than 29 bytes.
         */
-       switch ((type & ~CONTENT_EVENT_PD_MASK)) {
+       switch ((type & ~(CONTENT_EVENT_PD_MASK | CONTENT_EVENT_LB_MASK))) {
        case CONTENT_EVENT_MOUSE_ENTER | CONTENT_EVENT_MOUSE_MASK:
                strcpy(ptr, "_mouse_enter");
                break;
@@ -1559,7 +1528,6 @@ EAPI int livebox_get_pdsize(struct livebox *handler, int *w, int *h)
                h = &_h;
 
        if (!handler->is_pd_created) {
-               DbgPrint("Buffer is not created yet [%dx%d]\n", *w, *h);
                *w = handler->pd.default_width;
                *h = handler->pd.default_height;
        } else {
@@ -1592,7 +1560,6 @@ EAPI int livebox_size(struct livebox *handler)
        case _LB_TYPE_BUFFER:
        case _LB_TYPE_SCRIPT:
                if (!fb_is_created(handler->lb.data.fb)) {
-                       DbgPrint("Buffer is not created yet - reset size\n");
                        w = 0;
                        h = 0;
                }
@@ -1643,13 +1610,10 @@ EAPI int livebox_set_group(struct livebox *handler, const char *cluster, const c
        if (!cb)
                cb = default_group_changed_cb;
 
-       handler->group_changed_cb = cb;
-       handler->group_cbdata = data; 
-
        ret = master_rpc_async_request(handler, packet, 0, set_group_ret_cb, NULL);
-       if (ret < 0) {
-               handler->group_changed_cb = NULL;
-               handler->group_cbdata = NULL;
+       if (ret == LB_STATUS_SUCCESS) {
+               handler->group_changed_cb = cb;
+               handler->group_cbdata = data; 
        }
 
        return ret;
@@ -1925,8 +1889,8 @@ EAPI int livebox_release_lb_pixmap(struct livebox *handler, int pixmap)
 {
        struct packet *packet;
 
-       if (!handler) {
-               ErrPrint("Handler is NIL\n");
+       if (!handler || pixmap == 0) {
+               ErrPrint("Handler is NIL [%d]\n", pixmap);
                return LB_STATUS_ERROR_INVALID;
        }
 
@@ -2056,8 +2020,8 @@ EAPI int livebox_release_pd_pixmap(struct livebox *handler, int pixmap)
 {
        struct packet *packet;
 
-       if (!handler) {
-               ErrPrint("Handler is NIL\n");
+       if (!handler || pixmap == 0) {
+               ErrPrint("Handler is NIL [%d]\n", pixmap);
                return LB_STATUS_ERROR_INVALID;
        }
 
@@ -2219,13 +2183,10 @@ EAPI int livebox_set_pinup(struct livebox *handler, int flag, ret_cb_t cb, void
        if (!cb)
                cb = default_pinup_cb;
 
-       handler->pinup_cb = cb;
-       handler->pinup_cbdata = data;
-
        ret = master_rpc_async_request(handler, packet, 0, pinup_done_cb, NULL);
-       if (ret < 0) {
-               handler->pinup_cb = NULL;
-               handler->pinup_cbdata = NULL;
+       if (ret == LB_STATUS_SUCCESS) {
+               handler->pinup_cb = cb;
+               handler->pinup_cbdata = data;
        }
 
        return ret;
@@ -2464,8 +2425,6 @@ EAPI int livebox_set_visibility(struct livebox *handler, enum livebox_visible_st
                }
        }
 
-       DbgPrint("Change the visibility %d <> %d, %s\n", handler->visible, state, handler->id);
-
        if (handler->visible == state)
                return LB_STATUS_ERROR_ALREADY;
 
@@ -2910,71 +2869,61 @@ struct livebox *lb_unref(struct livebox *handler)
                return handler;
 
        if (handler->created_cb) {
-               DbgPrint("Clear created event callback\n");
                handler->created_cb(handler, LB_STATUS_ERROR_FAULT, handler->created_cbdata);
                handler->created_cb = NULL;
                handler->created_cbdata = NULL;
        }
 
        if (handler->deleted_cb) {
-               DbgPrint("Clear deleted event callback\n");
                handler->deleted_cb(handler, LB_STATUS_ERROR_FAULT, handler->deleted_cbdata);
                handler->deleted_cb = NULL;
                handler->deleted_cbdata = NULL;
        }
 
        if (handler->pinup_cb) {
-               DbgPrint("Clear pinup event callback\n");
                handler->pinup_cb(handler, LB_STATUS_ERROR_FAULT, handler->pinup_cbdata);
                handler->pinup_cb = NULL;
                handler->pinup_cbdata = NULL;
        }
 
        if (handler->group_changed_cb) {
-               DbgPrint("Clear group changed event callback\n");
                handler->group_changed_cb(handler, LB_STATUS_ERROR_FAULT, handler->group_cbdata);
                handler->group_changed_cb = NULL;
                handler->group_cbdata = NULL;
        }
 
        if (handler->period_changed_cb) {
-               DbgPrint("Clear period changed event callback\n");
                handler->period_changed_cb(handler, LB_STATUS_ERROR_FAULT, handler->period_cbdata);
                handler->period_changed_cb = NULL;
                handler->period_cbdata = NULL;
        }
 
        if (handler->size_changed_cb) {
-               DbgPrint("Clear size changed event callback\n");
                handler->size_changed_cb(handler, LB_STATUS_ERROR_FAULT, handler->size_cbdata);
                handler->size_changed_cb = NULL;
                handler->size_cbdata = NULL;
        }
 
        if (handler->pd_created_cb) {
-               DbgPrint("Clear pd created event callback\n");
                handler->pd_created_cb(handler, LB_STATUS_ERROR_FAULT, handler->pd_created_cbdata);
                handler->pd_created_cb = NULL;
                handler->pd_created_cbdata = NULL;
        }
 
        if (handler->pd_destroyed_cb) {
-               DbgPrint("Clear pd destroyed event callback\n");
                handler->pd_destroyed_cb(handler, LB_STATUS_ERROR_FAULT, handler->pd_destroyed_cbdata);
                handler->pd_destroyed_cb = NULL;
                handler->pd_destroyed_cbdata = NULL;
        }
 
        if (handler->update_mode_cb) {
-               DbgPrint("Clear update mode callback\n");
                handler->update_mode_cb(handler, LB_STATUS_ERROR_FAULT, handler->update_mode_cbdata);
                handler->update_mode_cb = NULL;
                handler->update_mode_cbdata = NULL;
        }
 
        if (handler->access_event_cb) {
-               DbgPrint("Clear access status callback\n");
-               handler->access_event_cb(handler, LB_STATUS_ERROR_FAULT, handler->access_event_cbdata);
+               handler->access_event_cb(handler, LB_ACCESS_STATUS_ERROR, handler->access_event_cbdata);
                handler->access_event_cb = NULL;
                handler->access_event_cbdata = NULL;
        }