]> git.sesse.net Git - nageru/commitdiff
Factor out find_signal_to_connect().
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 9 Feb 2020 13:41:43 +0000 (14:41 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 9 Feb 2020 13:41:43 +0000 (14:41 +0100)
nageru/scene.cpp

index 04f15ed827437fb87b8340d17ee77aa9cc513119..178755a0782ff38960c500a436932282e7de9ce2 100644 (file)
@@ -427,6 +427,24 @@ int Scene::finalize(lua_State* L)
        return 0;
 }
 
+int find_signal_to_connect(lua_State *L, const Block *block)
+{
+       if (block->signal_type_to_connect == Block::CONNECT_SIGNAL) {
+               return block->signal_to_connect;
+#ifdef HAVE_CEF
+       } else if (block->signal_type_to_connect == Block::CONNECT_CEF) {
+               return block->cef_to_connect->get_card_index();
+#endif
+       } else if (block->signal_type_to_connect == Block::CONNECT_VIDEO) {
+               return block->video_to_connect->get_card_index();
+       } else if (block->signal_type_to_connect == Block::CONNECT_NONE) {
+               luaL_error(L, "An input in a scene was not connected to anything (forgot to call display())");
+       } else {
+               assert(false);
+       }
+       return -1;
+}
+
 std::pair<movit::EffectChain *, std::function<void()>>
 Scene::get_chain(Theme *theme, lua_State *L, unsigned num, const InputState &input_state)
 {
@@ -480,24 +498,12 @@ Scene::get_chain(Theme *theme, lua_State *L, unsigned num, const InputState &inp
        for (const auto &index_and_input : instantiation.inputs) {
                Block *block = blocks[index_and_input.first];
                EffectType chosen_type = current_type(block);
-               LiveInputWrapper *input = index_and_input.second;
                if (chosen_type == LIVE_INPUT_YCBCR ||
                    chosen_type == LIVE_INPUT_YCBCR_WITH_DEINTERLACE ||
                    chosen_type == LIVE_INPUT_YCBCR_PLANAR ||
                    chosen_type == LIVE_INPUT_BGRA) {
-                       if (block->signal_type_to_connect == Block::CONNECT_SIGNAL) {
-                               signals_to_connect.emplace(input, block->signal_to_connect);
-#ifdef HAVE_CEF
-                       } else if (block->signal_type_to_connect == Block::CONNECT_CEF) {
-                               signals_to_connect.emplace(input, block->cef_to_connect->get_card_index());
-#endif
-                       } else if (block->signal_type_to_connect == Block::CONNECT_VIDEO) {
-                               signals_to_connect.emplace(input, block->video_to_connect->get_card_index());
-                       } else if (block->signal_type_to_connect == Block::CONNECT_NONE) {
-                               luaL_error(L, "An input in a scene was not connected to anything (forgot to call display())");
-                       } else {
-                               assert(false);
-                       }
+                       LiveInputWrapper *input = index_and_input.second;
+                       signals_to_connect.emplace(input, find_signal_to_connect(L, block));
                }
        }
        for (const auto &index_and_input : instantiation.image_inputs) {