Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index a667a599dfde75a133593dc62e50a5e355ace9f4..feeb6f975bc9af3e36badca9c27bfb0cf1c6ec51 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -120,6 +120,7 @@ |
#include "content/common/gpu/client/context_provider_command_buffer.h" |
#include "content/renderer/android/synchronous_compositor_factory.h" |
+#include "content/renderer/media/android/renderer_media_player_manager.h" |
#include "content/renderer/media/android/stream_texture_factory_impl.h" |
#include "content/renderer/media/android/webmediaplayer_android.h" |
#endif |
@@ -404,6 +405,9 @@ RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) |
notification_provider_(NULL), |
media_stream_client_(NULL), |
web_user_media_client_(NULL), |
+#if defined(OS_ANDROID) |
+ media_player_manager_(NULL), |
+#endif |
weak_factory_(this) { |
RenderThread::Get()->AddRoute(routing_id_, this); |
@@ -423,6 +427,10 @@ RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) |
RenderFrameImpl::~RenderFrameImpl() { |
FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone()); |
FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct()); |
+#if defined(VIDEO_HOLE) |
+ if (media_player_manager_) |
+ render_view_->UnregisterVideoHoleFrame(this); |
+#endif // defined(VIDEO_HOLE) |
kollas
2014/05/27 02:35:43
media_player_manger_ is only available #ifdef OS_A
|
g_routing_id_frame_map.Get().erase(routing_id_); |
RenderThread::Get()->RemoveRoute(routing_id_); |
} |
@@ -1251,6 +1259,8 @@ void RenderFrameImpl::LoadNavigationErrorPage( |
void RenderFrameImpl::DidCommitCompositorFrame() { |
if (compositing_helper_) |
compositing_helper_->DidCommitCompositorFrame(); |
+ FOR_EACH_OBSERVER( |
+ RenderFrameObserver, observers_, DidCommitCompositorFrame()); |
} |
RenderView* RenderFrameImpl::GetRenderView() { |
@@ -3481,19 +3491,29 @@ WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( |
} |
stream_texture_factory = StreamTextureFactoryImpl::Create( |
- context_provider, gpu_channel_host, render_view_->routing_id_); |
+ context_provider, gpu_channel_host, routing_id_); |
} |
return new WebMediaPlayerAndroid( |
frame_, |
client, |
weak_factory_.GetWeakPtr(), |
- render_view_->media_player_manager_, |
+ GetMediaPlayerManager(), |
stream_texture_factory, |
RenderThreadImpl::current()->GetMediaThreadMessageLoopProxy(), |
new RenderMediaLog()); |
} |
-#endif |
+RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
+ if (!media_player_manager_) { |
+ media_player_manager_ = new RendererMediaPlayerManager(this); |
+#if defined(VIDEO_HOLE) |
+ render_view_->RegisterVideoHoleFrame(this); |
+#endif // defined(VIDEO_HOLE) |
+ } |
+ return media_player_manager_; |
+} |
+ |
+#endif // defined(OS_ANDROID) |
} // namespace content |