]> git.sesse.net Git - nageru/blobdiff - nageru/theme.cpp
Fix compilation in debug mode.
[nageru] / nageru / theme.cpp
index 51aacd54bb4e239e9da9d5e75e180366002a1e91..d2a7bba3144f0a4e655ffd6241a926dcb08441f5 100644 (file)
@@ -52,6 +52,9 @@ using namespace movit;
 
 extern Mixer *global_mixer;
 
+constexpr unsigned Theme::MenuEntry::CHECKABLE;
+constexpr unsigned Theme::MenuEntry::CHECKED;
+
 Theme *get_theme_updata(lua_State* L)
 {
        luaL_checktype(L, lua_upvalueindex(1), LUA_TLIGHTUSERDATA);
@@ -1686,12 +1689,30 @@ bool Theme::get_supports_set_wb(unsigned channel)
 
 void Theme::set_wb(unsigned channel, float r, float g, float b)
 {
+       int signal = get_channel_signal(channel);
+
        lock_guard<mutex> lock(m);
+       if (signal != -1) {
+               white_balance_for_signal[signal] = RGBTriplet{ r, g, b };
+       }
 
-       if (channel_signals.count(channel)) {
-               white_balance_for_signal[channel_signals[channel]] = RGBTriplet{ r, g, b };
+       call_lua_wb_callback(channel, r, g, b);
+}
+
+void Theme::set_wb_for_signal(int signal, float r, float g, float b)
+{
+       lock_guard<mutex> lock(m);
+       white_balance_for_signal[signal] = RGBTriplet{ r, g, b };
+
+       for (const auto &channel_and_signal : channel_signals) {
+               if (channel_and_signal.second == signal) {
+                       call_lua_wb_callback(channel_and_signal.first, r, g, b);
+               }
        }
+}
 
+void Theme::call_lua_wb_callback(unsigned channel, float r, float g, float b)
+{
        lua_getglobal(L, "set_wb");
        if (lua_isnil(L, -1)) {
                // The function doesn't exist, to just ignore. We've stored the white balance,