DbgPrint("Default PD destroyed event handler: %d\n", ret);
}
+static inline void default_lb_size_changed_cb(struct livebox *handler, int ret, void *data)
+{
+ DbgPrint("Default LB size changed event handler: %d\n", ret);
+}
+
static inline __attribute__((always_inline)) struct cb_info *create_cb_info(ret_cb_t cb, void *data)
{
struct cb_info *info;
* So the user can only get the resized value(result) from the first update event
* after this request.
*/
-
- if (cb)
+ if (ret == 0) {
+ DbgPrint("Resize request is done, prepare the size changed event\n");
+ handler->size_changed_cb = cb;
+ handler->size_cbdata = cbdata;
+ } else {
+ DbgPrint("Resize request is failed: %d\n", ret);
cb(handler, ret, cbdata);
+ }
}
static void text_signal_cb(struct livebox *handler, const struct packet *result, void *data)
return NULL;
}
+ if (livebox_service_is_enabled(handler->pkgname) == 0) {
+ DbgPrint("Livebox [%s](%s) is disabled package\n", handler->pkgname, pkgname);
+ free(handler->pkgname);
+ free(handler);
+ return NULL;
+ }
+
if (content) {
handler->content = strdup(content);
if (!handler->content) {
return -EALREADY;
}
+ if (handler->period_changed_cb)
+ DbgPrint("Already requested\n");
+
packet = packet_create("set_period", "ssd", handler->pkgname, handler->id, period);
if (!packet) {
ErrPrint("Failed to build a packet %s\n", handler->pkgname);
return -EALREADY;
}
+ if (handler->size_changed_cb)
+ DbgPrint("Already pended\n");
+
packet = packet_create("resize", "ssii", handler->pkgname, handler->id, w, h);
if (!packet) {
ErrPrint("Failed to build param\n");
return -EFAULT;
}
+ if (!cb)
+ cb = default_lb_size_changed_cb;
+
return master_rpc_async_request(handler, packet, 0, resize_cb, create_cb_info(cb, data));
}
return master_rpc_async_request(handler, packet, 0, pd_create_cb, create_cb_info(cb, data));
}
+EAPI int livebox_move_pd(struct livebox *handler, double x, double y)
+{
+ struct packet *packet;
+
+ if (!handler) {
+ ErrPrint("Handler is NIL\n");
+ return -EINVAL;
+ }
+
+ if (!handler->pd.data.fb || handler->state != CREATE || !handler->id) {
+ ErrPrint("Handler is not valid\n");
+ return -EINVAL;
+ }
+
+ if (!handler->is_pd_created) {
+ DbgPrint("PD is not created\n");
+ return -EINVAL;
+ }
+
+ packet = packet_create_noack("pd_move", "ssdd", handler->pkgname, handler->id, x, y);
+ if (!packet) {
+ ErrPrint("Failed to build param\n");
+ return -EFAULT;
+ }
+
+ return master_rpc_request_only(handler, packet);
+}
+
EAPI int livebox_activate(const char *pkgname, ret_cb_t cb, void *data)
{
struct packet *packet;
if (!h)
h = &_h;
- *w = handler->pd.width;
- *h = handler->pd.height;
-
- switch (handler->pd.type) {
- case _PD_TYPE_BUFFER:
- case _PD_TYPE_SCRIPT:
- if (!handler->is_pd_created) {
- DbgPrint("Buffer is not created yet - reset size\n");
- *w = 0;
- *h = 0;
- }
- break;
- default:
- break;
+ 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 {
+ *w = handler->pd.width;
+ *h = handler->pd.height;
}
return 0;
return -EALREADY;
}
+ if (handler->group_changed_cb)
+ DbgPrint("Already sent\n");
+
packet = packet_create("change_group", "ssss", handler->pkgname, handler->id, cluster, category);
if (!packet) {
ErrPrint("Failed to build a param\n");
return -EALREADY;
}
+ if (handler->pinup_cb)
+ DbgPrint("Already sent\n");
+
packet = packet_create("pinup_changed", "ssi", handler->pkgname, handler->id, flag);
if (!packet) {
ErrPrint("Failed to build a param\n");
return master_rpc_request_only(NULL, packet);
}
+EAPI int livebox_refresh(struct livebox *handler)
+{
+ struct packet *packet;
+
+ if (!handler) {
+ ErrPrint("Hnalder is NIL\n");
+ return -EINVAL;
+ }
+
+ if (handler->state != CREATE || !handler->id)
+ return -EINVAL;
+
+ packet = packet_create_noack("update", "ss", handler->pkgname, handler->id);
+ if (!packet) {
+ ErrPrint("Failed to create a packet\n");
+ return -EFAULT;
+ }
+
+ return master_rpc_request_only(handler, packet);
+}
+
EAPI int livebox_refresh_group(const char *cluster, const char *category)
{
struct packet *packet;
handler->pd.height = h;
}
+void lb_set_default_pdsize(struct livebox *handler, int w, int h)
+{
+ handler->pd.default_width = w;
+ handler->pd.default_height = h;
+}
+
void lb_invoke_fault_handler(enum livebox_fault_type event, const char *pkgname, const char *file, const char *func)
{
struct dlist *l;
return master_rpc_async_request(handler, packet, 0, del_ret_cb, create_cb_info(cb, data));
}
+EAPI int livebox_client_paused(void)
+{
+ struct packet *packet;
+
+ packet = packet_create_noack("client_paused", "d", util_timestamp());
+ if (!packet) {
+ ErrPrint("Failed to create a pause packet\n");
+ return -EFAULT;
+ }
+
+ return master_rpc_request_only(NULL, packet);
+}
+
+EAPI int livebox_client_resumed(void)
+{
+ struct packet *packet;
+
+ packet = packet_create_noack("client_resumed", "d", util_timestamp());
+ if (!packet) {
+ ErrPrint("Failed to create a resume packet\n");
+ return -EFAULT;
+ }
+
+ return master_rpc_request_only(NULL, packet);
+}
+
/* End of a file */