]> git.sesse.net Git - casparcg/commitdiff
2.0. ffmpeg: Fixed global lock memory management.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 16 Jun 2011 10:41:15 +0000 (10:41 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 16 Jun 2011 10:41:15 +0000 (10:41 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@899 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

modules/ffmpeg/ffmpeg.cpp

index 80d2bb447d8507cce86c9ad1702fa34602a263bb..ad416eebdd6dbd6d243f9dec8b35ed4389cce796 100644 (file)
@@ -45,9 +45,6 @@ namespace caspar {
        \r
 int ffmpeg_lock_callback(void **mutex, enum AVLockOp op) \r
 { \r
-       static tbb::mutex                               container_mutex;\r
-       static std::vector<tbb::mutex>  container; \r
-\r
        if(!mutex)\r
                return 0;\r
 \r
@@ -57,9 +54,7 @@ int ffmpeg_lock_callback(void **mutex, enum AVLockOp op)
        { \r
                case AV_LOCK_CREATE: \r
                { \r
-                       tbb::mutex::scoped_lock lock(container_mutex);\r
-                       container.push_back(tbb::mutex());\r
-                       *mutex = &container.back(); \r
+                       *mutex = new tbb::mutex(); \r
                        break; \r
                } \r
                case AV_LOCK_OBTAIN: \r
@@ -76,11 +71,8 @@ int ffmpeg_lock_callback(void **mutex, enum AVLockOp op)
                } \r
                case AV_LOCK_DESTROY: \r
                { \r
-                       tbb::mutex::scoped_lock lock(container_mutex);\r
-                       container.erase(std::remove_if(container.begin(), container.end(), [&](const tbb::mutex& m)\r
-                       {\r
-                               return &m == my_mutex;\r
-                       }), container.end());\r
+                       delete my_mutex;\r
+                       *mutex = nullptr;\r
                        break; \r
                } \r
        } \r