vlc/vlc-1.1 | branch: master | John Freed <[email protected]> | Wed Mar 21 12:13:52 2012 +0100| [1f6ec58ab8d7f0779b781835ccc9279584dc9622] | committer: Jean-Baptiste Kempf
bda/dshow: RemoveFilter does an undocumented Release but does not set filter to NULL. Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc/vlc-1.1.git/?a=commit;h=1f6ec58ab8d7f0779b781835ccc9279584dc9622 --- modules/access/bda/bdagraph.cpp | 11 +++++------ modules/access/dshow/dshow.cpp | 10 +++++----- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/modules/access/bda/bdagraph.cpp b/modules/access/bda/bdagraph.cpp index 1a19c7c..9b5bcf2 100644 --- a/modules/access/bda/bdagraph.cpp +++ b/modules/access/bda/bdagraph.cpp @@ -1570,7 +1570,10 @@ HRESULT BDAGraph::FindFilter( REFCLSID clsid, long* i_moniker_used, return S_OK; } /* Not the filter we want so unload and try the next one */ + /* Warning: RemoveFilter does an undocumented Release() + * on pointer but does not set it to NULL */ hr = p_filter_graph->RemoveFilter( l.p_filter ); + l.p_filter = NULL; if( FAILED( hr ) ) { msg_Warn( p_access, "FindFilter: "\ @@ -1847,32 +1850,29 @@ HRESULT BDAGraph::Destroy() if( p_transport_info ) { + /* Warning: RemoveFilter does an undocumented Release() + * on pointer but does not set it to NULL */ p_filter_graph->RemoveFilter( p_transport_info ); - p_transport_info->Release(); p_transport_info = NULL; } if( p_mpeg_demux ) { p_filter_graph->RemoveFilter( p_mpeg_demux ); - p_mpeg_demux->Release(); p_mpeg_demux = NULL; } if( p_sample_grabber ) { p_filter_graph->RemoveFilter( p_sample_grabber ); - p_sample_grabber->Release(); p_sample_grabber = NULL; } if( p_capture_device ) { p_filter_graph->RemoveFilter( p_capture_device ); - p_capture_device->Release(); p_capture_device = NULL; } if( p_tuner_device ) { p_filter_graph->RemoveFilter( p_tuner_device ); - p_tuner_device->Release(); p_tuner_device = NULL; } if( p_scanning_tuner ) @@ -1883,7 +1883,6 @@ HRESULT BDAGraph::Destroy() if( p_network_provider ) { p_filter_graph->RemoveFilter( p_network_provider ); - p_network_provider->Release(); p_network_provider = NULL; } diff --git a/modules/access/dshow/dshow.cpp b/modules/access/dshow/dshow.cpp index a85ab5e..c6e8916 100644 --- a/modules/access/dshow/dshow.cpp +++ b/modules/access/dshow/dshow.cpp @@ -331,8 +331,8 @@ static void DeleteDirectShowGraph( access_sys_t *p_sys ) { p_sys->p_graph->RemoveFilter( p_sys->pp_streams[i]->p_capture_filter ); p_sys->p_graph->RemoveFilter( p_sys->pp_streams[i]->p_device_filter ); - p_sys->pp_streams[i]->p_capture_filter->Release(); - p_sys->pp_streams[i]->p_device_filter->Release(); + p_sys->pp_streams[i]->p_capture_filter = NULL; + p_sys->pp_streams[i]->p_device_filter = NULL; } /* Release directshow objects */ @@ -1148,9 +1148,9 @@ static int OpenDevice( vlc_object_t *p_this, access_sys_t *p_sys, p_sys->p_graph->RemoveFilter( p_device_filter ); p_sys->p_graph->RemoveFilter( p_capture_filter ); - /* Release objects */ - p_device_filter->Release(); - p_capture_filter->Release(); + /* Nullify objects */ + p_device_filter = NULL; + p_capture_filter = NULL; return VLC_EGENERIC; } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
