]> git.sesse.net Git - casparcg/commitdiff
2.1.0: output: Refactored remove(index).
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 3 Feb 2012 17:03:09 +0000 (17:03 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 3 Feb 2012 17:03:09 +0000 (17:03 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.1.0@2219 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

core/consumer/output.cpp

index bb05d480243d3d04020872ad3cb0b911d82eafa3..3c37ca3cf3bd700765bf9f16d604ca57ec67ae4d 100644 (file)
@@ -87,23 +87,23 @@ public:
 \r
        void remove(int index)\r
        {               \r
-               // Destroy  consumer on calling thread:\r
-               std::shared_ptr<frame_consumer> old_consumer;\r
-\r
-               executor_.invoke([&]\r
+               auto consumer = executor_.invoke([&]() -> std::shared_ptr<frame_consumer>\r
                {\r
+                       auto consumer = frame_consumer::empty();\r
                        auto it = consumers_.find(index);\r
                        if(it != consumers_.end())\r
                        {\r
-                               old_consumer = it->second;\r
+                               consumer = it->second;\r
                                consumers_.erase(it);\r
                        }\r
+                       return consumer;\r
                }, task_priority::high_priority);\r
 \r
-               if(old_consumer)\r
+               // Destroy consumer on calling thread:\r
+               if(consumer)\r
                {\r
-                       auto str = old_consumer->print();\r
-                       old_consumer.reset();\r
+                       auto str = consumer->print();\r
+                       consumer.reset();\r
                        CASPAR_LOG(info) << print() << L" " << str << L" Removed.";\r
                }\r
        }\r