graph_->set_color("tick-time", diagnostics::color(0.0f, 0.6f, 0.9f));\r
graph_->set_color("param", diagnostics::color(1.0f, 0.5f, 0.0f));\r
\r
- lock(get_global_init_destruct_mutex(), [this]\r
- {\r
\r
- CoInitialize(nullptr);\r
+ CoInitialize(nullptr);\r
\r
- if(FAILED(CComObject<caspar::flash::FlashAxContainer>::CreateInstance(&ax_)))\r
- BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(narrow(print()) + " Failed to create FlashAxContainer"));\r
+ if(FAILED(CComObject<caspar::flash::FlashAxContainer>::CreateInstance(&ax_)))\r
+ BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(narrow(print()) + " Failed to create FlashAxContainer"));\r
\r
- if(FAILED(ax_->CreateAxControl()))\r
- BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(narrow(print()) + " Failed to Create FlashAxControl"));\r
- });\r
+ if(FAILED(ax_->CreateAxControl()))\r
+ BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(narrow(print()) + " Failed to Create FlashAxControl"));\r
\r
ax_->set_print([this]{return print();});\r
\r
if(FAILED(spFlash->put_Playing(true)) )\r
BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(narrow(print()) + " Failed to start playing Flash"));\r
\r
- if(FAILED(spFlash->put_Movie(CComBSTR(filename.c_str()))))\r
- BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(narrow(print()) + " Failed to Load Template Host"));\r
+ // Concurrent initialization of two template hosts causes a\r
+ // SecurityException later when CG ADD is performed. Initialization is\r
+ // therefore serialized via a global mutex.\r
+ lock(get_global_init_destruct_mutex(), [&]\r
+ {\r
+ if(FAILED(spFlash->put_Movie(CComBSTR(filename.c_str()))))\r
+ BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(narrow(print()) + " Failed to Load Template Host"));\r
+ });\r
\r
if(FAILED(spFlash->put_ScaleMode(2))) //Exact fit. Scale without respect to the aspect ratio.\r
BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(narrow(print()) + " Failed to Set Scale Mode"));\r
{ \r
if(ax_)\r
{\r
- lock(get_global_init_destruct_mutex(), [this]\r
- {\r
- ax_->DestroyAxControl();\r
- ax_->Release();\r
- });\r
+ ax_->DestroyAxControl();\r
+ ax_->Release();\r
}\r
graph_->set_value("tick-time", 0.0f);\r
graph_->set_value("frame-time", 0.0f);\r