diff options
author | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-17 01:44:41 +0000 |
---|---|---|
committer | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-17 01:44:41 +0000 |
commit | ba4363e6ca4c3667c4640666e66fbdf5ab162dec (patch) | |
tree | 9c6a90313208612481cd7045d8100978e4672b86 /chrome/renderer/webmediaplayer_delegate_impl.cc | |
parent | 0e8588c1528cad6732d172775aba8e891baebdef (diff) | |
download | chromium_src-ba4363e6ca4c3667c4640666e66fbdf5ab162dec.zip chromium_src-ba4363e6ca4c3667c4640666e66fbdf5ab162dec.tar.gz chromium_src-ba4363e6ca4c3667c4640666e66fbdf5ab162dec.tar.bz2 |
Load media resource with file handle for media playback
Used ResourceDispatcher to provide resource loading mechanism for media
playback in DataSourceImpl. So now DataSourceImpl actually initialize the
resource loading in browser process using ResourceDispatcher and
IPCResourceLoaderBridge. DataSourceImpl will be using the file handle provided
in resource response for reading and listen on OnDownloadProgress for download
progress.
Review URL: http://codereview.chromium.org/39159
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11820 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/webmediaplayer_delegate_impl.cc')
-rw-r--r-- | chrome/renderer/webmediaplayer_delegate_impl.cc | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/chrome/renderer/webmediaplayer_delegate_impl.cc b/chrome/renderer/webmediaplayer_delegate_impl.cc index 11c2391..78dcd4c 100644 --- a/chrome/renderer/webmediaplayer_delegate_impl.cc +++ b/chrome/renderer/webmediaplayer_delegate_impl.cc @@ -46,6 +46,7 @@ WebMediaPlayerDelegateImpl::WebMediaPlayerDelegateImpl(RenderView* view) filter_factory_(new media::FilterFactoryCollection()), audio_renderer_(NULL), video_renderer_(NULL), + data_source_(NULL), web_media_player_(NULL), view_(view), tasks_(kLastTaskIndex) { @@ -273,10 +274,21 @@ void WebMediaPlayerDelegateImpl::Paint(skia::PlatformCanvas *canvas, } void WebMediaPlayerDelegateImpl::WillDestroyCurrentMessageLoop() { - if (audio_renderer_) + // Instruct the renderers and data source to release all Renderer related + // resources during destruction of render thread, because they won't have any + // chance to release these resources on render thread by posting tasks on it. + if (audio_renderer_) { audio_renderer_->ReleaseRendererResources(); - // Stop the pipeline when the main thread is being destroyed so we won't be - // posting any more messages onto it. And we just let this obejct and + audio_renderer_ = NULL; + } + + if (data_source_) { + data_source_->ReleaseRendererResources(); + data_source_ = NULL; + } + + // Stop the pipeline when the render thread is being destroyed so we won't be + // posting any more messages onto it. And we just let this object and // associated WebMediaPlayer to leak. pipeline_.Stop(); } @@ -312,6 +324,11 @@ void WebMediaPlayerDelegateImpl::SetVideoRenderer( video_renderer_ = video_renderer; } +void WebMediaPlayerDelegateImpl::SetDataSource( + DataSourceImpl* data_source) { + data_source_ = data_source; +} + void WebMediaPlayerDelegateImpl::DidTask(CancelableTask* task) { AutoLock auto_lock(task_lock_); |