mrp_funcbridge_value_t args[4];
mrp_funcbridge_value_t ret;
char rt;
+ int top;
/*
* crate and emit a synthetic disconnection message if the client
h = c->sc->handler.client;
if (h != NULL) {
+ top = lua_gettop(c->sc->L);
+
args[0].pointer = c->sc->scl;
args[1].integer = c->id;
args[2].pointer = mrp_json_lua_wrap(c->sc->L, req);
ret.string ? ret.string : "<unknown error>");
mrp_free((void *)ret.string);
}
+
+ lua_settop(c->sc->L, top);
}
mrp_json_unref(req);
mrp_funcbridge_value_t args[4];
mrp_funcbridge_value_t ret;
char rt;
+ int top;
MRP_UNUSED(t);
h = sc->handler.client;
if (h != NULL) {
+ top = lua_gettop(sc->L);
+
args[0].pointer = sc->scl;
args[1].integer = c->id;
args[2].pointer = mrp_json_lua_wrap(sc->L, req);
ret.string ? ret.string : "<unknown error>");
mrp_free((void *)ret.string);
}
+
+ lua_settop(sc->L, top);
}
}
}
if (h != NULL || (h = sc->handler.generic) != NULL) {
+ top = lua_gettop(sc->L);
+
args[0].pointer = sc->scl;
args[1].integer = c->id;
args[2].pointer = mrp_json_lua_wrap(sc->L, req);
ret.string ? ret.string : "<unknown error>");
mrp_free((void *)ret.string);
}
+
+ lua_settop(sc->L, top);
}
else
mrp_debug("No handler for system-controller message of type 0x%x.",
mrp_funcbridge_t *fb;
mrp_funcbridge_value_t args[4], ret;
char t;
+ int top;
MRP_ASSERT(resmgr && event, "invalid argument");
return;
}
+ top = lua_gettop(L);
+
switch (event->type) {
case MRP_RESMGR_EVENT_SCREEN:
default:
mrp_debug("can't deliver resource events to LUA: invalid event type");
- return;
+ goto out;
}
if (!sev) {
mrp_debug("can't deliver %s resource events to LUA: "
"failed to create scripting event", type_str);
- return;
+ goto out;
}
if (!fb) {
mrp_debug("can't deliver %s resource events to LUA: "
"no funcbridge", type_str);
- return;
+ goto out;
}
args[0].pointer = rm;
"method (%s)", ret.string ? ret.string : "NULL");
mrp_free((void *)ret.string);
}
+
+ out:
+ lua_settop(L, top);
}
)
);
-MRP_LUA_CLASS_DEF_SIMPLE (
+MRP_LUA_CLASS_DEF_SIMPLE_FLAGS (
code_mask, /* class name */
scripting_code_mask_t, /* userdata type */
code_mask_destroy, /* userdata destructor */
MRP_LUA_OVERRIDE_GETFIELD (code_mask_getfield)
MRP_LUA_OVERRIDE_SETFIELD (code_mask_setfield)
MRP_LUA_OVERRIDE_STRINGIFY (code_mask_stringify)
- )
+ ),
+ MRP_LUA_CLASS_DYNAMIC
);
lua_State *L;
scripting_inpmgr_t *inpmgr;
mrp_funcbridge_value_t args[4], ret;
+ int top;
char t;
bool success;
return;
}
+ top = lua_gettop(L);
+
args[0].pointer = inpmgr;
args[1].integer = oper;
args[2].pointer = inp->scripting_data;
"(%s)", inpmgr->name, ret.string ? ret.string : "NULL");
mrp_free((void *)ret.string);
}
+
+ lua_settop(L, top);
}
static void code_update_callback(mrp_wayland_t *wl,
lua_State *L;
scripting_inpmgr_t *inpmgr;
mrp_funcbridge_value_t args[4], ret;
+ int top;
char t;
bool success;
return;
}
+ top = lua_gettop(L);
+
args[0].pointer = inpmgr;
args[1].integer = oper;
args[2].pointer = code->scripting_data;
"(%s)", inpmgr->name, ret.string ? ret.string : "NULL");
mrp_free((void *)ret.string);
}
+
+ lua_settop(L, top);
}
#if 0
)
);
-MRP_LUA_CLASS_DEF_SIMPLE (
+MRP_LUA_CLASS_DEF_SIMPLE_FLAGS (
input_mask, /* class name */
scripting_input_mask_t, /* userdata type */
input_mask_destroy, /* userdata destructor */
MRP_LUA_OVERRIDE_GETFIELD (input_mask_getfield)
MRP_LUA_OVERRIDE_SETFIELD (input_mask_setfield)
MRP_LUA_OVERRIDE_STRINGIFY (input_mask_stringify)
- )
+ ),
+ MRP_LUA_CLASS_DYNAMIC
);
)
);
-MRP_LUA_CLASS_DEF_SIMPLE (
+MRP_LUA_CLASS_DEF_SIMPLE_FLAGS (
layer_mask, /* class name */
scripting_layer_mask_t, /* userdata type */
layer_mask_destroy, /* userdata destructor */
MRP_LUA_OVERRIDE_GETFIELD (layer_mask_getfield)
MRP_LUA_OVERRIDE_SETFIELD (layer_mask_setfield)
MRP_LUA_OVERRIDE_STRINGIFY (layer_mask_stringify)
- )
+ ),
+ MRP_LUA_CLASS_DYNAMIC
);
)
);
-MRP_LUA_CLASS_DEF_SIMPLE (
+MRP_LUA_CLASS_DEF_SIMPLE_FLAGS (
output_mask, /* class name */
scripting_output_mask_t, /* userdata type */
output_mask_destroy, /* userdata destructor */
MRP_LUA_OVERRIDE_GETFIELD (output_mask_getfield)
MRP_LUA_OVERRIDE_SETFIELD (output_mask_setfield)
MRP_LUA_OVERRIDE_STRINGIFY (output_mask_stringify)
- )
+ ),
+ MRP_LUA_CLASS_DYNAMIC
);
lua_State *L;
scripting_winmgr_t *winmgr;
mrp_funcbridge_value_t args[4], ret;
+ int top;
char t;
bool success;
return;
}
+ top = lua_gettop(L);
+
args[0].pointer = winmgr;
args[1].integer = oper;
args[2].pointer = win->scripting_data;
"(%s)", winmgr->name, ret.string ? ret.string : "NULL");
mrp_free((void *)ret.string);
}
+
+ lua_settop(L, top);
}
static void window_hint_callback(mrp_wayland_t *wl,
scripting_winmgr_t *winmgr;
void *wh;
mrp_funcbridge_value_t args[4], ret;
+ int top;
char t;
bool success;
MRP_ASSERT(wl == winmgr->wl, "confused with data structures");
+ top = lua_gettop(L);
+
if (!(wh = mrp_wayland_scripting_window_hint_create_from_c(L, hint)))
return;
"(%s)", winmgr->name, ret.string ? ret.string : "NULL");
mrp_free((void *)ret.string);
}
+
+ lua_settop(L, top);
}
static bool output_request_bridge(lua_State *L,
lua_State *L;
scripting_winmgr_t *winmgr;
mrp_funcbridge_value_t args[4], ret;
+ int top;
char t;
bool success;
return;
}
+ top = lua_gettop(L);
+
args[0].pointer = winmgr;
args[1].integer = oper;
args[2].pointer = out->scripting_data;
"(%s)", winmgr->name, ret.string ? ret.string : "NULL");
mrp_free((void *)ret.string);
}
+
+ lua_settop(L, top);
}
static bool area_create_bridge(lua_State *L,
lua_State *L;
scripting_winmgr_t *winmgr;
mrp_funcbridge_value_t args[4], ret;
+ int top;
char t;
bool success;
return;
}
+ top = lua_gettop(L);
+
args[0].pointer = winmgr;
args[1].integer = oper;
args[2].pointer = layer->scripting_data;
"(%s)", winmgr->name, ret.string ? ret.string : "NULL");
mrp_free((void *)ret.string);
}
+
+ lua_settop(L, top);
}
)
);
-MRP_LUA_CLASS_DEF_SIMPLE (
+MRP_LUA_CLASS_DEF_SIMPLE_FLAGS (
window_mask, /* class name */
scripting_window_mask_t, /* userdata type */
window_mask_destroy, /* userdata destructor */
MRP_LUA_OVERRIDE_GETFIELD (window_mask_getfield)
MRP_LUA_OVERRIDE_SETFIELD (window_mask_setfield)
MRP_LUA_OVERRIDE_STRINGIFY (window_mask_stringify)
- )
+ ),
+ MRP_LUA_CLASS_DYNAMIC
);
MRP_LUA_CLASS_DEF_SIMPLE (