]> git.sesse.net Git - casparcg/commitdiff
Fixed bug with RouteCommand where filnames with a - caused the RouteCommand to consid...
authorHelge Norberg <helge.norberg@gmail.com>
Wed, 26 Jun 2013 13:39:23 +0000 (15:39 +0200)
committerHelge Norberg <helge.norberg@gmail.com>
Wed, 26 Jun 2013 13:39:23 +0000 (15:39 +0200)
protocol/amcp/AMCPCommandsImpl.cpp
version.tmpl

index eff83829694d35a4b5fc7e45e627134b07568afd..31d2bbf6fa8a2f91e3b362fa9d3ad3b56fcc1667 100644 (file)
@@ -884,11 +884,45 @@ safe_ptr<core::frame_producer> RouteCommand::TryCreateProducer(AMCPCommand& comm
        auto src_channel_layer_token = tokens[0] == L"route" ? tokens[1] : uri;\r
        std::vector<std::wstring> src_channel_layer;\r
        boost::split(src_channel_layer, src_channel_layer_token, boost::is_any_of("-"));\r
+       bool is_channel_layer_spec = src_channel_layer.size() == 2;\r
+       bool is_channel_spec = src_channel_layer.size() == 1;\r
+       int src_channel_index;\r
 \r
-       if (tokens[0] == L"route" || src_channel_layer.size() == 2) // It looks like a route\r
+       if (is_channel_layer_spec || is_channel_spec)\r
+       {\r
+               try\r
+               {\r
+                       src_channel_index = boost::lexical_cast<int>(src_channel_layer[0]);\r
+               }\r
+               catch(const boost::bad_lexical_cast&)\r
+               {\r
+                       is_channel_layer_spec = false;\r
+                       is_channel_spec = false;\r
+               }\r
+       }\r
+\r
+       int src_layer_index = -1;\r
+\r
+       if (is_channel_layer_spec)\r
+       {\r
+               if (!src_channel_layer[1].empty())\r
+               {\r
+                       try\r
+                       {\r
+                               src_layer_index = boost::lexical_cast<int>(src_channel_layer[1]);\r
+                       }\r
+                       catch(const boost::bad_lexical_cast&)\r
+                       {\r
+                               is_channel_layer_spec = false;\r
+                       }\r
+               }\r
+               else\r
+                       is_channel_layer_spec = false;\r
+       }\r
+\r
+       if (tokens[0] == L"route" || is_channel_layer_spec || is_channel_spec) // It looks like a route\r
        {\r
                // Find the source channel\r
-               int src_channel_index = boost::lexical_cast<int>(src_channel_layer[0]);\r
                auto channels = command.GetChannels();\r
                auto src_channel = std::find_if(\r
                        channels.begin(), \r
@@ -899,19 +933,10 @@ safe_ptr<core::frame_producer> RouteCommand::TryCreateProducer(AMCPCommand& comm
                        BOOST_THROW_EXCEPTION(null_argument() << msg_info("src channel not found"));\r
 \r
                // Find the source layer (if one is given)\r
-               int src_layer_index = -1;\r
-               if (src_channel_layer.size() > 1 && !src_channel_layer[1].empty())\r
-               {\r
-                       src_layer_index = boost::lexical_cast<int>(src_channel_layer[1]);\r
-               }\r
-\r
-               if (src_layer_index >= 0)\r
-               {\r
+               if (is_channel_layer_spec)\r
                        pFP = create_layer_producer(command.GetChannel()->mixer(), (*src_channel)->stage(), src_layer_index);\r
-               } else \r
-               {\r
+               else \r
                        pFP = create_channel_producer(command.GetChannel()->mixer(), *src_channel);\r
-               }\r
        }\r
        return pFP;\r
 }\r
index 312499759f1aeb5d5c8c525859531abf70a10bd6..0fe2dfed1acdb7a4c6453dc88f8082a35207aa6f 100644 (file)
@@ -1,4 +1,4 @@
 #define CASPAR_GEN 2\r
 #define CASPAR_MAYOR 0\r
-#define CASPAR_MINOR 3\r
-#define CASPAR_TAG "STABLE"\r
+#define CASPAR_MINOR 4\r
+#define CASPAR_TAG "Beta"\r