class freehand_producer : public frame_producer_base
{
+ monitor::subject monitor_subject_;
std::vector<uint8_t, tbb::cache_aligned_allocator<uint8_t>> drawing_;
spl::shared_ptr<core::frame_factory> frame_factory_;
constraints constraints_;
monitor::source& monitor_output()
{
- static monitor::subject monitor_subject(""); return monitor_subject;
+ return monitor_subject_;
}
};
class const_producer : public frame_producer_base
{
+ monitor::subject monitor_subject_;
std::vector<draw_frame> frames_;
std::vector<draw_frame>::const_iterator seek_position_;
constraints constraints_;
monitor::source& monitor_output()
{
- static monitor::subject monitor_subject(""); return monitor_subject;
+ return monitor_subject_;
}
};
struct hotswap_producer::impl
{
+ monitor::subject monitor_subject;
binding<std::shared_ptr<frame_producer>> producer;
constraints size;
monitor::source& hotswap_producer::monitor_output()
{
- static monitor::subject monitor_subject(""); return monitor_subject;
+ return impl_->monitor_subject;
}
binding<std::shared_ptr<frame_producer>>& hotswap_producer::producer()
std::map<void*, timeline> timelines_;
std::map<std::wstring, std::shared_ptr<core::variable>> variables_;
std::vector<std::wstring> variable_names_;
+ monitor::subject monitor_subject_;
impl(int width, int height)
: pixel_constraints_(width, height)
monitor::source& monitor_output()
{
- static monitor::subject monitor_subject(""); return monitor_subject;
+ return monitor_subject_;
}
};
struct text_producer::impl
{
+ monitor::subject monitor_subject_;
spl::shared_ptr<core::frame_factory> frame_factory_;
constraints constraints_;
int x_, y_, parent_width_, parent_height_;
std::wstring text_producer::print() const { return impl_->print(); }
std::wstring text_producer::name() const { return impl_->name(); }
boost::property_tree::wptree text_producer::info() const { return impl_->info(); }
-monitor::source& text_producer::monitor_output() { static monitor::subject monitor_subject(""); return monitor_subject; }
+monitor::source& text_producer::monitor_output() { return impl_->monitor_subject_; }
binding<std::wstring>& text_producer::text() { return impl_->text(); }
binding<double>& text_producer::tracking() { return impl_->tracking(); }
const binding<double>& text_producer::current_bearing_y() const { return impl_->current_bearing_y(); }
struct bluefish_consumer_proxy : public core::frame_consumer
{
+ monitor::subject monitor_subject_;
+
std::unique_ptr<bluefish_consumer> consumer_;
const int device_index_;
const bool embedded_audio_;
monitor::source& monitor_output()
{
- static monitor::subject monitor_subject(""); return monitor_subject;
+ return monitor_subject_;
}
};
struct decklink_consumer_proxy : public core::frame_consumer
{
+ monitor::subject monitor_subject_;
const configuration config_;
std::unique_ptr<decklink_consumer> consumer_;
executor executor_;
monitor::source& monitor_output()
{
- static monitor::subject monitor_subject(""); return monitor_subject;
+ return monitor_subject_;
}
};
struct image_consumer : public core::frame_consumer
{
- std::wstring filename_;
+ monitor::subject monitor_subject_;
+ std::wstring filename_;
public:
// frame_consumer
monitor::source& monitor_output()
{
- static monitor::subject monitor_subject(""); return monitor_subject;
+ return monitor_subject_;
}
};
struct oal_consumer : public core::frame_consumer
{
+ monitor::subject monitor_subject_;
+
spl::shared_ptr<diagnostics::graph> graph_;
boost::timer perf_timer_;
int channel_index_;
monitor::source& monitor_output()
{
- static monitor::subject monitor_subject(""); return monitor_subject;
+ return monitor_subject_;
}
};
class reroute_producer : public reactive::observer<std::map<int, core::draw_frame>>
, public core::frame_producer_base
{
+ monitor::subject monitor_subject_;
+
core::constraints constraints_;
const spl::shared_ptr<diagnostics::graph> graph_;
monitor::source& monitor_output()
{
- static monitor::subject monitor_subject(""); return monitor_subject;
+ return monitor_subject_;
}
};
struct screen_consumer_proxy : public core::frame_consumer
{
+ monitor::subject monitor_subject_;
const configuration config_;
std::unique_ptr<screen_consumer> consumer_;
core::interaction_sink* sink_;
monitor::source& monitor_output()
{
- static monitor::subject monitor_subject(""); return monitor_subject;
+ return monitor_subject_;
}
};