\r
~flash_renderer()\r
{\r
- ax_->DestroyAxControl();\r
- ax_.Release();\r
+ try\r
+ {\r
+ ax_->DestroyAxControl();\r
+ ax_.Release();\r
+ }\r
+ catch(...)\r
+ {\r
+ CASPAR_LOG_CURRENT_EXCEPTION();\r
+ }\r
+\r
::OleUninitialize();\r
CASPAR_LOG(info) << print() << L" Ended";\r
}\r
\r
void render()\r
{ \r
- while(frame_buffer_.size() < 3) // Keep pipeline filled.\r
- {\r
- bool is_progressive = format_desc_.mode == video_mode::progressive || (ax_->GetFPS() - format_desc_.fps/2 == 0);\r
-\r
- safe_ptr<draw_frame> frame = render_frame();\r
- if(!is_progressive)\r
- frame = draw_frame::interlace(frame, render_frame(), format_desc_.mode);\r
+ bool is_progressive = format_desc_.mode == video_mode::progressive || (ax_->GetFPS() - format_desc_.fps/2 == 0);\r
+ \r
+ safe_ptr<draw_frame> frame = render_frame();\r
+ if(!is_progressive)\r
+ frame = draw_frame::interlace(frame, render_frame(), format_desc_.mode);\r
\r
- frame_buffer_.try_push(std::move(frame));\r
- }\r
+ frame_buffer_.try_push(std::move(frame));\r
}\r
\r
safe_ptr<draw_frame> render_frame()\r
executor_.invoke([&]\r
{\r
if(!renderer_)\r
+ {\r
renderer_.reset(factory_());\r
+ for(int n = 0; n < 8; ++n)\r
+ render_frame();\r
+ }\r
renderer_->param(param);\r
- render_frame();\r
});\r
}\r
\r
{\r
auto frame = draw_frame::empty();\r
if(renderer_ && renderer_->try_pop(frame)) // Only render again if frame was removed from buffer. \r
- executor_.begin_invoke([this]{render_frame();}); \r
+ executor_.begin_invoke([this]{render_frame();}); \r
+ else\r
+ CASPAR_LOG(trace) << print() << " underflow.";\r
return frame;\r
}\r
\r
wcmd = L"LOADBG 1-1 " + wcmd.substr(1, wcmd.length()-1) + L" MIX 100 LOOP AUTOPLAY";\r
else if(wcmd.substr(0, 1) == L"4")\r
wcmd = L"LOADBG 1-1 " + wcmd.substr(1, wcmd.length()-1) + L" WIPE 100 LOOP AUTOPLAY";\r
- else if(wcmd == L"5")\r
- wcmd = L"LOADBG 1-1 " + wcmd.substr(1, wcmd.length()-1) + L" CUT 100 LOOP AUTOPLAY";\r
+ else if(wcmd.substr(0, 1) == L"5")\r
+ wcmd = L"LOADBG 1-1 " + wcmd.substr(1, wcmd.length()-1) + L" LOOP AUTOPLAY";\r
else if(wcmd.substr(0, 1) == L"6")\r
wcmd = L"CG 1-2 ADD 1 BBTELEFONARE 1";\r
else if(wcmd.substr(0, 1) == L"7")\r