X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=theme.cpp;h=7e69f91e5d5feccca50a88bf32a7ea44080b7830;hb=726e2b853e3b2f080a981546480eb8291b57f458;hp=3f387f81e3de2706b9d0c3c4c7ce3cddd00ff81b;hpb=fb5360d92864760d70d8a69c8dd4a9e738bcc0f0;p=nageru diff --git a/theme.cpp b/theme.cpp index 3f387f8..7e69f91 100644 --- a/theme.cpp +++ b/theme.cpp @@ -2,8 +2,7 @@ #include #include -#include -#include +#include #include #include #include @@ -782,6 +781,22 @@ string Theme::get_channel_name(unsigned channel) return ret; } +int Theme::get_channel_signal(unsigned channel) +{ + unique_lock lock(m); + lua_getglobal(L, "channel_signal"); + lua_pushnumber(L, channel); + if (lua_pcall(L, 1, 1, 0) != 0) { + fprintf(stderr, "error running function `channel_signal': %s\n", lua_tostring(L, -1)); + exit(1); + } + + int ret = luaL_checknumber(L, 1); + lua_pop(L, 1); + assert(lua_gettop(L) == 0); + return ret; +} + bool Theme::get_supports_set_wb(unsigned channel) { unique_lock lock(m); @@ -837,14 +852,23 @@ vector Theme::get_transition_names(float t) int Theme::map_signal(int signal_num) { + unique_lock lock(map_m); + if (signal_to_card_mapping.count(signal_num)) { + return signal_to_card_mapping[signal_num]; + } if (signal_num >= int(num_cards)) { - if (signals_warned_about.insert(signal_num).second) { - fprintf(stderr, "WARNING: Theme asked for input %d, but we only have %u card(s).\n", signal_num, num_cards); - fprintf(stderr, "Mapping to card %d instead.\n", signal_num % num_cards); - } - signal_num %= num_cards; + fprintf(stderr, "WARNING: Theme asked for input %d, but we only have %u card(s).\n", signal_num, num_cards); + fprintf(stderr, "Mapping to card %d instead.\n", signal_num % num_cards); } - return signal_num; + signal_to_card_mapping[signal_num] = signal_num % num_cards; + return signal_num % num_cards; +} + +void Theme::set_signal_mapping(int signal_num, int card_num) +{ + unique_lock lock(map_m); + assert(card_num < int(num_cards)); + signal_to_card_mapping[signal_num] = card_num; } void Theme::transition_clicked(int transition_num, float t)