/** Remove a global signal. * \param L The Lua VM state. * \return The number of elements pushed on stack. * \luastack * \lparam A string with the event name. * \lparam The function to call. */ static int luaA_awesome_disconnect_signal(lua_State *L) { const char *name = luaL_checkstring(L, 1); luaA_checkfunction(L, 2); const void *func = lua_topointer(L, 2); signal_disconnect(&global_signals, name, func); luaA_object_unref(L, (void *) func); return 0; }
/** Remove a signal to an object. * \param L The Lua VM state. * \param oud The object index on the stack. * \param name The name of the signal. * \param ud The index of function to call when signal is emitted. */ void luaA_object_disconnect_signal_from_stack(lua_State *L, int oud, const char *name, int ud) { luaA_checkfunction(L, ud); lua_object_t *obj = lua_touserdata(L, oud); void *ref = (void *) lua_topointer(L, ud); signal_disconnect(&obj->signals, name, ref); luaA_object_unref_item(L, oud, ref); lua_remove(L, ud); }