- virtual ULONG STDMETHODCALLTYPE AddRef(void) { return 1; }
- virtual ULONG STDMETHODCALLTYPE Release(void) { return 1; }
+
+ // Note: AddRef() and Release() here are not thread safe.
+
+ virtual ULONG STDMETHODCALLTYPE AddRef(void)
+ {
+ return ++m_ref_;
+ }
+
+ virtual ULONG STDMETHODCALLTYPE Release(void)
+ {
+ if ( --m_ref_ == 0 )
+ {
+ delete this;
+ return 0;
+ }
+ return m_ref_;
+ }
virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged(BMDVideoInputFormatChangedEvents, IDeckLinkDisplayMode*, BMDDetectedVideoInputFormatFlags);
virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(IDeckLinkVideoInputFrame*, IDeckLinkAudioInputPacket*);
private:
virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged(BMDVideoInputFormatChangedEvents, IDeckLinkDisplayMode*, BMDDetectedVideoInputFormatFlags);
virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(IDeckLinkVideoInputFrame*, IDeckLinkAudioInputPacket*);
private: