summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/webmediaplayer_delegate_impl.cc
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-17 01:44:41 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-17 01:44:41 +0000
commitba4363e6ca4c3667c4640666e66fbdf5ab162dec (patch)
tree9c6a90313208612481cd7045d8100978e4672b86 /chrome/renderer/webmediaplayer_delegate_impl.cc
parent0e8588c1528cad6732d172775aba8e891baebdef (diff)
downloadchromium_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.cc23
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_);