]> git.sesse.net Git - casparcg/blobdiff - common/polling_filesystem_monitor.cpp
[decklink] Using reset() on std::packaged_task was wrong. It keeps the task functor.
[casparcg] / common / polling_filesystem_monitor.cpp
index 52a411828a2ade1b411361cf3d04239d6298eadf..c189218ea31ab0d450ef545009477131c33e241f 100644 (file)
@@ -88,13 +88,18 @@ public:
        {
        }
 
-       void reemmit_all()
+       void reemmit_all(const tbb::atomic<bool>& running)
        {
                if (static_cast<int>(events_mask_ & filesystem_event::MODIFIED) == 0)
                        return;
 
                for (auto& file : files_)
+               {
+                       if (!running)
+                               return;
+
                        handler_(filesystem_event::MODIFIED, file.first);
+               }
        }
 
        void reemmit(const boost::filesystem::path& file)
@@ -289,10 +294,10 @@ private:
                try
                {
                        if (reemmit_all_.fetch_and_store(false))
-                               root_monitor_.reemmit_all();
+                               root_monitor_.reemmit_all(running_);
                        else
                        {
-                               boost::filesystem::wpath file;
+                               boost::filesystem::path file;
 
                                while (to_reemmit_.try_pop(file))
                                        root_monitor_.reemmit(file);