class image_renderer\r
{\r
ogl_device& ogl_;\r
- video_format_desc format_desc_;\r
+ const video_format_desc format_desc_;\r
image_kernel kernel_; \r
- std::shared_ptr<device_buffer> active_buffer_;\r
+ std::shared_ptr<device_buffer> transferring_buffer_;\r
public:\r
image_renderer(ogl_device& ogl, const video_format_desc& format_desc)\r
: ogl_(ogl)\r
{\r
}\r
\r
- boost::unique_future<safe_ptr<host_buffer>> render(std::vector<layer>&& layers)\r
+ boost::unique_future<safe_ptr<host_buffer>> operator()(std::vector<layer>&& layers)\r
{ \r
auto layers2 = make_move_on_copy(std::move(layers));\r
return ogl_.begin_invoke([=]\r
ogl_.attach(*draw_buffer);\r
host_buffer->begin_read(draw_buffer->width(), draw_buffer->height(), format(draw_buffer->stride()));\r
\r
- active_buffer_ = std::move(draw_buffer);\r
+ transferring_buffer_ = std::move(draw_buffer);\r
\r
ogl_.flush(); // NOTE: This is important, otherwise fences will deadlock.\r
\r
\r
boost::unique_future<safe_ptr<host_buffer>> render()\r
{\r
- return renderer_.render(std::move(layers_));\r
+ return renderer_(std::move(layers_));\r
}\r
\r
safe_ptr<write_frame> create_frame(const void* tag, const pixel_format_desc& desc)\r