}
}
- slave = package_slave(instance_package(inst));
- if (!slave)
- return LB_STATUS_ERROR_FAULT;
-
info = instance_package(inst);
- if (!info)
+ if (!info) {
+ ErrPrint("No package info\n");
return LB_STATUS_ERROR_INVALID;
+ }
+
+ slave = package_slave(info);
+ if (!slave) {
+ ErrPrint("No slave\n");
+ return LB_STATUS_ERROR_FAULT;
+ }
pkgname = package_name(info);
id = instance_id(inst);
- if (!pkgname || !id)
+ if (!pkgname || !id) {
+ ErrPrint("pkgname[%s] id[%s]\n", pkgname, id);
return LB_STATUS_ERROR_INVALID;
+ }
packet = packet_create_noack("pd_show", "ssiidd", pkgname, id, instance_pd_width(inst), instance_pd_height(inst), inst->pd.x, inst->pd.y);
if (!packet) {
struct pkg_info *pkg;
int ret;
- if (inst->pd.owner != client)
- return LB_STATUS_ERROR_INVALID;
-
- slave = package_slave(instance_package(inst));
- if (!slave)
- return LB_STATUS_ERROR_FAULT;
+ if (inst->pd.owner != client) {
+ ErrPrint("Has no permission\n");
+ return LB_STATUS_ERROR_PERMISSION;
+ }
pkg = instance_package(inst);
- if (!pkg)
+ if (!pkg) {
+ ErrPrint("No package info\n");
return LB_STATUS_ERROR_INVALID;
+ }
+
+ slave = package_slave(pkg);
+ if (!slave) {
+ ErrPrint("No assigned slave\n");
+ return LB_STATUS_ERROR_FAULT;
+ }
pkgname = package_name(pkg);
id = instance_id(inst);
- if (!pkgname || !id)
+ if (!pkgname || !id) {
+ ErrPrint("pkgname[%s] & id[%s] is not valid\n", pkgname, id);
return LB_STATUS_ERROR_INVALID;
+ }
packet = packet_create_noack("pd_hide", "ss", pkgname, id);
- if (!packet)
+ if (!packet) {
+ ErrPrint("Failed to create a packet\n");
return LB_STATUS_ERROR_FAULT;
+ }
slave_thaw_ttl(slave);
ret = slave_rpc_request_only(slave, pkgname, packet, 0);
release_resource_for_closing_pd(pkg, inst, client);
inst->pd.owner = NULL;
+ DbgPrint("PERF_DBOX\n");
return ret;
}
return item->data;
}
-HAPI const struct client_node *instance_pd_owner(struct inst_info *inst)
+HAPI struct client_node *instance_pd_owner(struct inst_info *inst)
{
return inst->pd.owner;
}
static Eina_Bool pd_open_monitor_cb(void *data)
{
int ret;
- ret = instance_client_pd_created(data, LB_STATUS_ERROR_TIMEOUT);
- (void)instance_del_data(data, "pd,open,monitor");
- (void)instance_unref(data);
+ struct inst_info *inst = data;
+
+ ret = instance_slave_close_pd(inst, instance_pd_owner(inst));
+ ret = instance_client_pd_created(inst, LB_STATUS_ERROR_TIMEOUT);
+ (void)instance_del_data(inst, "pd,open,monitor");
+ (void)instance_unref(inst);
ErrPrint("PD Open request is timed-out (%lf), ret: %d\n", PD_REQUEST_TIMEOUT, ret);
return ECORE_CALLBACK_CANCEL;
}
static Eina_Bool pd_close_monitor_cb(void *data)
{
int ret;
+
ret = instance_client_pd_destroyed(data, LB_STATUS_ERROR_TIMEOUT);
(void)instance_del_data(data, "pd,close,monitor");
(void)instance_unref(data);
static Eina_Bool pd_resize_monitor_cb(void *data)
{
int ret;
+ struct inst_info *inst = data;
- ret = instance_client_pd_destroyed(data, LB_STATUS_ERROR_TIMEOUT);
- (void)instance_del_data(data, "pd,resize,monitor");
- (void)instance_unref(data);
+ ret = instance_slave_close_pd(inst, instance_pd_owner(inst));
+ ret = instance_client_pd_destroyed(inst, LB_STATUS_ERROR_TIMEOUT);
+ (void)instance_del_data(inst, "pd,resize,monitor");
+ (void)instance_unref(inst);
ErrPrint("PD Resize request is not processed in %lf seconds (%d)\n", PD_REQUEST_TIMEOUT, ret);
return ECORE_CALLBACK_CANCEL;
}
goto out;
if (instance_pd_owner(inst)) {
+ ErrPrint("PD is already owned\n");
ret = LB_STATUS_ERROR_ALREADY;
} else if (package_pd_type(instance_package(inst)) == PD_TYPE_BUFFER) {
lazy_pd_destroyed_cb(inst);
const struct pkg_info *pkg;
Ecore_Timer *pd_monitor;
+ DbgPrint("PERF_DBOX\n");
+
client = client_find_by_pid(pid);
if (!client) {
ErrPrint("Client %d is not exists\n", pid);
goto out;
if (instance_pd_owner(inst) != client) {
- ret = instance_pd_owner(inst) == NULL ? LB_STATUS_ERROR_ALREADY : LB_STATUS_ERROR_PERMISSION;
+ if (instance_pd_owner(inst) == NULL) {
+ ErrPrint("PD looks already closed\n");
+ ret = LB_STATUS_ERROR_ALREADY;
+ } else {
+ ErrPrint("PD owner mimatched\n");
+ ret = LB_STATUS_ERROR_PERMISSION;
+ }
} else if (package_pd_type(pkg) == PD_TYPE_BUFFER) {
int resize_aborted = 0;
ret = instance_slave_close_pd(inst, client);
if (ret < 0) {
ErrPrint("PD close request failed: %d\n", ret);
+ } else if (resize_aborted) {
+ pd_monitor = ecore_timer_add(DELAY_TIME, lazy_pd_destroyed_cb, instance_ref(inst));
+ if (!pd_monitor) {
+ ErrPrint("Failed to create a timer: %s\n", pkgname);
+ (void)instance_unref(inst);
+ } else {
+ (void)instance_set_data(inst, "lazy,pd,close", pd_monitor);
+ }
} else {
- if (resize_aborted) {
- pd_monitor = ecore_timer_add(DELAY_TIME, lazy_pd_destroyed_cb, instance_ref(inst));
- if (!pd_monitor) {
- ErrPrint("Failed to create a timer: %s\n", pkgname);
- (void)instance_unref(inst);
- } else {
- (void)instance_set_data(inst, "lazy,pd,close", pd_monitor);
- }
+ pd_monitor = ecore_timer_add(PD_REQUEST_TIMEOUT, pd_close_monitor_cb, instance_ref(inst));
+ if (!pd_monitor) {
+ (void)instance_unref(inst);
+ ErrPrint("Failed to add pd close monitor\n");
} else {
- pd_monitor = ecore_timer_add(PD_REQUEST_TIMEOUT, pd_close_monitor_cb, instance_ref(inst));
- if (!pd_monitor) {
- (void)instance_unref(inst);
- ErrPrint("Failed to add pd close monitor\n");
- } else {
- (void)instance_set_data(inst, "pd,close,monitor", pd_monitor);
- }
+ (void)instance_set_data(inst, "pd,close,monitor", pd_monitor);
}
}
/*!
pd_monitor = instance_del_data(inst, "pd,close,monitor");
if (!pd_monitor) {
- ErrPrint("There is no requests to release pd buffer\n");
+ ErrPrint("Slave requests to release a buffer\n");
/*!
* \note
* In this case just keep going to release buffer,