return frame;\r
}\r
\r
-safe_ptr<basic_frame> receive_and_follow_w_last(safe_ptr<frame_producer>& producer)\r
-{\r
- auto frame = receive_and_follow(producer);\r
- if(frame == basic_frame::late())\r
- frame = producer->last_frame();\r
- return frame;\r
-}\r
-\r
void register_producer_factory(const producer_factory_t& factory)\r
{\r
g_factories.push_back(factory);\r
\r
safe_ptr<basic_frame> receive(const safe_ptr<frame_producer>& producer);\r
safe_ptr<basic_frame> receive_and_follow(safe_ptr<frame_producer>& producer);\r
-safe_ptr<basic_frame> receive_and_follow_w_last(safe_ptr<frame_producer>& producer);\r
\r
typedef std::function<safe_ptr<core::frame_producer>(const safe_ptr<frame_factory>&, const std::vector<std::wstring>&)> producer_factory_t;\r
void register_producer_factory(const producer_factory_t& factory); // Not thread-safe.\r
\r
tbb::parallel_invoke\r
(\r
- [&]{dest = receive_and_follow_w_last(dest_producer_);},\r
- [&]{source = receive_and_follow_w_last(source_producer_);}\r
+ [&]\r
+ {\r
+ dest = receive_and_follow(dest_producer_);\r
+ if(dest == core::basic_frame::late())\r
+ dest = dest_producer_->last_frame();\r
+ },\r
+ [&]\r
+ {\r
+ source = receive_and_follow(source_producer_);\r
+ if(source == core::basic_frame::late())\r
+ source = source_producer_->last_frame();\r
+ }\r
);\r
\r
return compose(dest, source);\r