\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