output_(draw());\r
executor_.begin_invoke([=]{tick();});\r
}\r
+ \r
+ layer& get_layer(int index)\r
+ {\r
+ auto it = layers_.find(index);\r
+ if(it == layers_.end())\r
+ it = layers_.insert(std::make_pair(index, layer(index, std::bind(&implementation::print, this)))).first;\r
+ return it->second;\r
+ }\r
\r
std::vector<safe_ptr<draw_frame>> draw()\r
{ \r
\r
void load(int index, const safe_ptr<frame_producer>& producer, bool play_on_load, bool preview)\r
{\r
- producer->set_parent_printer(std::bind(&layer::print, &layers_[index]));\r
+ producer->set_parent_printer(std::bind(&layer::print, &get_layer(index)));\r
producer->initialize(factory_);\r
- executor_.invoke([&]{layers_[index].load(producer, play_on_load, preview);});\r
+ executor_.invoke([&]{get_layer(index).load(producer, play_on_load, preview);});\r
}\r
\r
void pause(int index)\r
{ \r
- executor_.invoke([&]{layers_[index].pause();});\r
+ executor_.invoke([&]{get_layer(index).pause();});\r
}\r
\r
void play(int index)\r
{ \r
- executor_.invoke([&]{layers_[index].play();});\r
+ executor_.invoke([&]{get_layer(index).play();});\r
}\r
\r
void stop(int index)\r
{ \r
- executor_.invoke([&]{layers_[index].stop();});\r
+ executor_.invoke([&]{get_layer(index).stop();});\r
}\r
\r
void clear(int index)\r
{\r
- executor_.invoke([&]{layers_[index].clear();});\r
+ executor_.invoke([&]{get_layer(index).clear();});\r
}\r
\r
void clear()\r
{\r
executor_.invoke([&]\r
{\r
- layers_[index].swap(layers_[other_index]);\r
+ get_layer(index).swap(layers_[other_index]);\r
});\r
}\r
\r
{\r
auto func = [&]\r
{\r
- layers_[index].swap(other.impl_->layers_.at(other_index)); \r
+ get_layer(index).swap(other.impl_->layers_.at(other_index)); \r
\r
CASPAR_LOG(info) << print() << L" Swapped layer " << index << L" with " << other.impl_->print() << L" layer " << other_index << L"."; \r
};\r
std::set_union(my_indices.begin(), my_indices.end(), other_indicies.begin(), other_indicies.end(), std::back_inserter(indices));\r
\r
BOOST_FOREACH(auto index, indices)\r
- layers_[index].swap(other.impl_->layers_[index]);\r
+ get_layer(index).swap(other.impl_->get_layer(index));\r
\r
CASPAR_LOG(info) << print() << L" Swapped layers with " << other.impl_->print() << L".";\r
};\r