]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Tue, 16 Aug 2011 11:50:50 +0000 (11:50 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Tue, 16 Aug 2011 11:50:50 +0000 (11:50 +0000)
common/concurrency/com_context.h

index 8717d7e5c3191a2f62036708f2dbdc1ace9b68ff..31ab5a1623b8845dc37a937aca256d6384b7865e 100644 (file)
@@ -2,12 +2,15 @@
 \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
@@ -28,11 +31,14 @@ public:
 \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