\r
#include "executor.h"\r
\r
+#include "../log/log.h"\r
+\r
#define NOMINMAX\r
#define WIN32_LEAN_AND_MEAN\r
\r
#include <Windows.h>\r
\r
#include <boost/noncopyable.hpp>\r
+#include <boost/thread/future.hpp>\r
\r
#include <functional>\r
\r
\r
~com_context()\r
{\r
- executor::invoke([&]\r
+ if(!executor::begin_invoke([&]\r
{\r
instance_.reset(nullptr);\r
::CoUninitialize();\r
- });\r
+ }).timed_wait(boost::posix_time::milliseconds(500)))\r
+ {\r
+ CASPAR_LOG(error) << L"[com_contex] Timer expired, deadlock detected and released, leaking resources";\r
+ }\r
}\r
\r
void reset(const std::function<T*()>& factory = nullptr)\r