window_manager_operation_name(oper))
end
if oper == 1 then
- local umask = window_mask { raise = true,
- visible = true,
- active = true }
- local rmask = window_mask { active = true }
+ local wumask = window_mask { raise = true,
+ visible = true,
+ active = true }
+ local wrmask = window_mask { active = true }
+ local lumask = layer_mask { visible = true }
+ local lrmask = layer_mask { visible = true }
local req = m:JSON({
- passthrough_update = umask:tointeger(),
- passthrough_request = rmask:tointeger()
+ passthrough_window_update = wumask:tointeger(),
+ passthrough_window_request = wrmask:tointeger(),
+ passthrough_layer_update = lumask:tointeger(),
+ passthrough_layer_request = lrmask:tointeger()
})
self:manager_request(req)
end
}
application {
+ appid = "org.tizen.ico.onscreen",
+ area = "Center.Full",
+ privileges = { screen = "system", audio = "system" },
+ resource_class = "player",
+ screen_priority = 20
+}
+
+application {
appid = "org.tizen.ico.login",
area = "Center.Full",
privileges = { screen = "system", audio = "system" },
/* 14 */ MANAGER_UPDATE, OUTPUT_REQUEST, RESOURCE_CLASS, WINDOW_MANAGER,
WINDOW_REQUEST,
/* 15 */ MANAGER_REQUEST, SCREEN_PRIORITY,
- /* 18 */ PASSTHROUGH_UPDATE,
- /* 19 */ AUDIO_EVENT_HANDLER, PASSTHROUGH_REQUEST, RESOURCE_SET_CREATE,
+ /* 19 */ AUDIO_EVENT_HANDLER, RESOURCE_SET_CREATE,
/* 20 */ RESOURCE_SET_ACQUIRE, RESOURCE_SET_DESTROY, RESOURCE_SET_RELEASE,
SCREEN_EVENT_HANDLER,
/* 22 */ DISABLE_AUDIO_BY_APPID,
/* 23 */ DISABLE_SCREEN_BY_APPID,
- /* 25 */ DISABLE_SCREEN_BY_SURFACE,
- /* 26 */ DISABLE_AUDIO_BY_REQUISITE,
+ /* 24 */ PASSTHROUGH_LAYER_UPDATE,
+ /* 25 */ DISABLE_SCREEN_BY_SURFACE, PASSTHROUGH_LAYER_REQUEST,
+ PASSTHROUGH_WINDOW_UPDATE,
+ /* 26 */ DISABLE_AUDIO_BY_REQUISITE, PASSTHROUGH_WINDOW_REQUEST,
/* 27 */ DISABLE_SCREEN_BY_REQUISITE,
};
mrp_debug("layerid=%u visible=%d", layerid, visible);
memset(&u, 0, sizeof(u));
- u.mask = MRP_WAYLAND_WINDOW_VISIBLE_MASK;
+ u.mask = MRP_WAYLAND_LAYER_VISIBLE_MASK;
u.visible = visible;
if (!(layer = mrp_wayland_layer_find(wl, layerid))) {
}
static void set_layer_visible(mrp_wayland_layer_t *layer,
+ mrp_wayland_layer_update_mask_t passthrough,
mrp_wayland_layer_update_t *u)
{
struct ico_window_mgr *ico_window_mgr;
need_visibility_change = false;
if (!(mask & MRP_WAYLAND_LAYER_VISIBLE_MASK) ||
- (u->visible && layer->visible) || (!u->visible && !layer->visible))
+ ((( u->visible && layer->visible) ||
+ (!u->visible && !layer->visible) ) &&
+ !(passthrough & MRP_WAYLAND_LAYER_VISIBLE_MASK)))
{
visible = ICO_WINDOW_MGR_V_NOCHANGE;
}
mrp_wayland_layer_update_t *u)
{
mrp_wayland_t *wl;
+ mrp_wayland_window_manager_t *wm;
mrp_wayland_layer_update_mask_t mask;
+ mrp_wayland_layer_update_mask_t passthrough;
char buf[2048];
MRP_ASSERT(layer && layer->wm && layer->wm->proxy &&
layer->wm->interface && layer->wm->interface->wl,
"invalid argument");
- wl = layer->wm->interface->wl;
+ wm = layer->wm;
+ wl = wm->interface->wl;
+ passthrough = wm->passthrough.layer_request;
mask = u->mask;
mrp_wayland_layer_request_print(u, buf, sizeof(buf));
while (mask) {
if ((mask & MRP_WAYLAND_LAYER_VISIBLE_MASK)) {
- set_layer_visible(layer, u);
+ set_layer_visible(layer, passthrough, u);
mask &= ~MRP_WAYLAND_LAYER_VISIBLE_MASK;
}
else {
wm = win->wm;
wl = wm->interface->wl;
- passthrough = wm->passthrough.request;
+ passthrough = wm->passthrough.window_request;
mask = u->mask;
mrp_wayland_window_request_print(u, wbuf, sizeof(wbuf));
mrp_wayland_layer_update_t *u)
{
mrp_wayland_layer_update_mask_t mask = 0;
+ mrp_wayland_layer_update_mask_t passthrough = 0;
+ mrp_wayland_window_manager_t *wm;
+
+ if ((wm = layer->wm))
+ passthrough = wm->passthrough.layer_update;
if ((u->mask & MRP_WAYLAND_LAYER_NAME_MASK)) {
- if (!layer->name || strcmp(u->name, layer->name)) {
+ if (!layer->name || strcmp(u->name, layer->name) ||
+ (passthrough & MRP_WAYLAND_LAYER_NAME_MASK))
+ {
mask |= MRP_WAYLAND_LAYER_NAME_MASK;
mrp_free(layer->name);
layer->name = mrp_strdup(u->name);
}
if ((u->mask & MRP_WAYLAND_LAYER_TYPE_MASK)) {
- if (u->type != layer->type) {
+ if (u->type != layer->type ||
+ (passthrough & MRP_WAYLAND_LAYER_TYPE_MASK))
+ {
mask |= MRP_WAYLAND_LAYER_TYPE_MASK;
layer->type = u->type;
}
}
if ((u->mask & MRP_WAYLAND_LAYER_VISIBLE_MASK)) {
- if ((u->visible && !layer->visible)||(!u->visible && layer->visible)) {
+ if (( u->visible && !layer->visible) ||
+ (!u->visible && layer->visible) ||
+ (passthrough & MRP_WAYLAND_LAYER_VISIBLE_MASK))
+ {
mask |= MRP_WAYLAND_LAYER_VISIBLE_MASK;
layer->visible = u->visible;
}
static int layer_mask_getfield(lua_State *);
static int layer_mask_setfield(lua_State *);
static int layer_mask_stringify(lua_State *);
+static int layer_mask_tointeger(lua_State *);
static void layer_mask_destroy(void *);
static scripting_layer_mask_t *layer_mask_check(lua_State *, int);
layer_mask_destroy, /* userdata destructor */
MRP_LUA_METHOD_LIST ( /* methods */
MRP_LUA_METHOD_CONSTRUCTOR (layer_mask_create_from_lua)
+ MRP_LUA_METHOD(tointeger, layer_mask_tointeger)
),
MRP_LUA_METHOD_LIST ( /* overrides */
MRP_LUA_OVERRIDE_CALL (layer_mask_create_from_lua)
MRP_LUA_LEAVE(1);
}
+static int layer_mask_tointeger(lua_State *L)
+{
+ scripting_layer_mask_t *um;
+
+ MRP_LUA_ENTER;
+
+ um = layer_mask_check(L, 1);
+ lua_pushinteger(L, um->mask);
+
+ MRP_LUA_LEAVE(1);
+}
+
static void layer_mask_destroy(void *data)
{
scripting_layer_mask_t *um = (scripting_layer_mask_t *)data;
return MANAGER_REQUEST;
break;
- case 18:
- if (!strcmp(name, "passthrough_update"))
- return PASSTHROUGH_UPDATE;
+ case 24:
+ if (!strcmp(name, "passthrough_layer_update"))
+ return PASSTHROUGH_LAYER_UPDATE;
break;
- case 19:
- if (!strcmp(name, "passthrough_request"))
- return PASSTHROUGH_REQUEST;
+ case 25:
+ switch (name[12]) {
+ case 'l':
+ if (!strcmp(name, "passthrough_layer_request"))
+ return PASSTHROUGH_LAYER_REQUEST;
+ break;
+ case 'w':
+ if (!strcmp(name, "passthrough_window_update"))
+ return PASSTHROUGH_WINDOW_UPDATE;
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case 26:
+ if (!strcmp(name, "passthrough_window_request"))
+ return PASSTHROUGH_WINDOW_REQUEST;
break;
default:
mrp_funcbridge_push(L, wmgr->window_update);
break;
- case PASSTHROUGH_REQUEST:
- mask = (wl->wm ? wl->wm->passthrough.request : 0);
- goto push_mask;
+ case PASSTHROUGH_WINDOW_REQUEST:
+ mask = (wl->wm ? wl->wm->passthrough.window_request : 0);
+ goto push_window_mask;
- case PASSTHROUGH_UPDATE:
- mask = (wl->wm ? wl->wm->passthrough.update : 0);
- goto push_mask;
+ case PASSTHROUGH_WINDOW_UPDATE:
+ mask = (wl->wm ? wl->wm->passthrough.window_update : 0);
+ goto push_window_mask;
- push_mask:
+ case PASSTHROUGH_LAYER_REQUEST:
+ mask = (wl->wm ? wl->wm->passthrough.layer_request : 0);
+ goto push_layer_mask;
+
+ case PASSTHROUGH_LAYER_UPDATE:
+ mask = (wl->wm ? wl->wm->passthrough.layer_update : 0);
+ goto push_layer_mask;
+
+ push_window_mask:
if (!mrp_wayland_scripting_window_mask_create_from_c(L, mask))
lua_pushnil(L);
break;
+ push_layer_mask:
+ if (!mrp_wayland_scripting_layer_mask_create_from_c(L, mask))
+ lua_pushnil(L);
+ break;
+
default:
lua_pushstring(L, fldnam);
lua_rawget(L, 1);
mrp_json_foreach_member(json, key,val, it) {
switch (mrp_wayland_scripting_field_name_to_type(key, -1)) {
- case PASSTHROUGH_REQUEST:
+ case PASSTHROUGH_WINDOW_REQUEST:
+ if (!mrp_wayland_json_integer_copy(wl, &mask, val, 1))
+ mrp_debug("'%s' field has invalid value", key);
+ else {
+ mrp_debug("set passthrough.window_request to 0x%x", mask);
+ wm->passthrough.window_request = mask;
+ }
+ break;
+
+ case PASSTHROUGH_WINDOW_UPDATE:
+ if (!mrp_wayland_json_integer_copy(wl, &mask, val, 1))
+ mrp_debug("'%s' field has invalid value", key);
+ else {
+ mrp_debug("set passthrough.window_update to 0x%x", mask);
+ wm->passthrough.window_update = mask;
+ }
+ break;
+
+ case PASSTHROUGH_LAYER_REQUEST:
if (!mrp_wayland_json_integer_copy(wl, &mask, val, 1))
mrp_debug("'%s' field has invalid value", key);
else {
- mrp_debug("set passthrough.request to 0x%x", mask);
- wm->passthrough.request = mask;
+ mrp_debug("set passthrough.layer_request to 0x%x", mask);
+ wm->passthrough.layer_request = mask;
}
break;
- case PASSTHROUGH_UPDATE:
+ case PASSTHROUGH_LAYER_UPDATE:
if (!mrp_wayland_json_integer_copy(wl, &mask, val, 1))
mrp_debug("'%s' field has invalid value", key);
else {
- mrp_debug("set passthrough.update to 0x%x", mask);
- wm->passthrough.update = mask;
+ mrp_debug("set passthrough.layer_update to 0x%x", mask);
+ wm->passthrough.layer_update = mask;
}
break;
mrp_wayland_animation_t *, \
uint32_t); \
struct { \
- mrp_wayland_window_update_mask_t request; \
- mrp_wayland_window_update_mask_t update; \
+ mrp_wayland_window_update_mask_t window_request; \
+ mrp_wayland_window_update_mask_t window_update; \
+ \
+ mrp_wayland_layer_update_mask_t layer_request; \
+ mrp_wayland_layer_update_mask_t layer_update; \
} passthrough
mrp_wayland_window_update_t *u)
{
mrp_wayland_window_update_mask_t mask = 0;
- mrp_wayland_window_update_mask_t passthrough = win->wm->passthrough.update;
+ mrp_wayland_window_update_mask_t passthrough;
+
+ passthrough = win->wm->passthrough.window_update;
if ((u->mask & MRP_WAYLAND_WINDOW_NAME_MASK)) {
if (!win->name || strcmp(u->name, win->name) ||