#include <memory>
#include "defs.h"
+#include "flags.h"
#include "image_input.h"
#include "mixer.h"
} // namespace
Theme::Theme(const char *filename, ResourcePool *resource_pool, unsigned num_cards)
- : resource_pool(resource_pool), num_cards(num_cards)
+ : resource_pool(resource_pool), num_cards(num_cards), signal_to_card_mapping(global_flags.default_stream_mapping)
{
L = luaL_newstate();
luaL_openlibs(L);
exit(1);
}
- chain.chain = (EffectChain *)luaL_checkudata(L, -2, "EffectChain");
+ chain.chain = (EffectChain *)luaL_testudata(L, -2, "EffectChain");
+ if (chain.chain == nullptr) {
+ fprintf(stderr, "get_chain() for chain number %d did not return an EffectChain\n",
+ num);
+ exit(1);
+ }
if (!lua_isfunction(L, -1)) {
fprintf(stderr, "Argument #-1 should be a function\n");
exit(1);
fprintf(stderr, "error running function `channel_name': %s\n", lua_tostring(L, -1));
exit(1);
}
+ const char *ret = lua_tostring(L, -1);
+ if (ret == nullptr) {
+ fprintf(stderr, "function `channel_name' returned nil for channel %d\n", channel);
+ exit(1);
+ }
- string ret = lua_tostring(L, -1);
+ string retstr = ret;
lua_pop(L, 1);
assert(lua_gettop(L) == 0);
- return ret;
+ return retstr;
}
int Theme::get_channel_signal(unsigned channel)
exit(1);
}
- std::string ret = checkstdstring(L, -1);
+ const char *ret = lua_tostring(L, -1);
+ if (ret == nullptr) {
+ fprintf(stderr, "function `channel_color' returned nil for channel %d\n", channel);
+ exit(1);
+ }
+
+ string retstr = ret;
lua_pop(L, 1);
assert(lua_gettop(L) == 0);
- return ret;
+ return retstr;
}
bool Theme::get_supports_set_wb(unsigned channel)