]> git.sesse.net Git - casparcg/commitdiff
Try to use a unique pdwCookie when Advising an ITimerSink in flash producer. This...
authorHelge Norberg <helge.norberg@svt.se>
Wed, 9 Dec 2015 13:56:31 +0000 (14:56 +0100)
committerHelge Norberg <helge.norberg@svt.se>
Wed, 9 Dec 2015 13:56:31 +0000 (14:56 +0100)
modules/flash/interop/TimerHelper.h
modules/flash/producer/FlashAxContainer.cpp

index a848ac011e55bb41e87e4e256d46bdfbc3769c51..6d2c7ac0e6daebfd2007ef1abe7764d6c3677a27 100644 (file)
@@ -34,20 +34,25 @@ namespace flash {
        public:
                TimerHelper()
                {}
-               TimerHelper(DWORD first, DWORD interv, ITimerSink* pTS) : firstTime(first), interval(interv), currentTime(first), pTimerSink(pTS)
+               TimerHelper(DWORD id, DWORD first, DWORD interv, ITimerSink* pTS)
+                       : ID(id)
+                       , firstTime(first)
+                       , interval(interv)
+                       , currentTime(first)
+                       , pTimerSink(pTS)
                {
-                       ID = first;
                }
+
                ~TimerHelper()
                {
                }
-               void Setup(DWORD first, DWORD interv, ITimerSink* pTS)
+               void Setup(DWORD id, DWORD first, DWORD interv, ITimerSink* pTS)
                {
+                       ID = id;
                        firstTime = first;
                        interval = interv;
                        currentTime = first;
                        pTimerSink = pTS;
-                       ID = first;
                }
 
                DWORD Invoke()
@@ -64,11 +69,11 @@ namespace flash {
                        return currentTime;
                }
 
+               DWORD ID;
                DWORD firstTime;
                DWORD interval;
                DWORD currentTime;
                ATL::CComPtr<ITimerSink> pTimerSink;
-               DWORD ID;
        };
 
 }      //namespace flash
index 1b2de24587413617f96d8b1fe7050009f36c5df2..b9ff2e5a56528f86def2d6a775eb6eedc50d1d6b 100644 (file)
@@ -540,7 +540,8 @@ HRESULT STDMETHODCALLTYPE FlashAxContainer::Advise(VARIANT vtimeMin, VARIANT vti
 
        if(pTimerHelper != 0)
        {
-               pTimerHelper->Setup(vtimeMin.ulVal, vtimeInterval.ulVal, pTimerSink);
+               static tbb::atomic<DWORD> NEXT_ID;
+               pTimerHelper->Setup(++NEXT_ID, vtimeMin.ulVal, vtimeInterval.ulVal, pTimerSink);
                *pdwCookie = pTimerHelper->ID;
                bHasNewTiming_ = true;