void register_class(const char *class_name, const luaL_Reg *funcs);
std::mutex m;
lua_State *L; // Protected by <m>.
void register_class(const char *class_name, const luaL_Reg *funcs);
std::mutex m;
lua_State *L; // Protected by <m>.
LiveInputWrapper(Theme *theme, movit::EffectChain *chain, bmusb::PixelFormat pixel_format, bool override_bounce, bool deinterlace);
LiveInputWrapper(Theme *theme, movit::EffectChain *chain, bmusb::PixelFormat pixel_format, bool override_bounce, bool deinterlace);
- void connect_signal(int signal_num);
- void connect_signal_raw(int signal_num);
+ void connect_signal(int signal_num); // Must be called with the theme's <m> lock held, since it accesses theme->input_state.
+ void connect_signal_raw(int signal_num, const InputState &input_state);
std::vector<movit::YCbCrInput *> ycbcr_inputs; // Multiple ones if deinterlacing. Owned by the chain.
std::vector<movit::FlatInput *> rgba_inputs; // Multiple ones if deinterlacing. Owned by the chain.
movit::Effect *deinterlace_effect = nullptr; // Owned by the chain.
std::vector<movit::YCbCrInput *> ycbcr_inputs; // Multiple ones if deinterlacing. Owned by the chain.
std::vector<movit::FlatInput *> rgba_inputs; // Multiple ones if deinterlacing. Owned by the chain.
movit::Effect *deinterlace_effect = nullptr; // Owned by the chain.