Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(919)

Unified Diff: content/renderer/render_thread_impl.cc

Issue 1385883002: Leave CreateStreamTexture route id out of the GL interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/render_thread_impl.cc
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index a2a2508668361fefe6776467a9c73c07cac39e13..0b7d800d7fb2f56112539b29c3ea6a09ab8ef141 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -161,6 +161,7 @@
#include <cpu-features.h>
#include "content/renderer/android/synchronous_compositor_factory.h"
#include "content/renderer/media/android/renderer_demuxer_android.h"
+#include "content/renderer/media/android/stream_texture_factory_impl.h"
#endif
#if defined(OS_MACOSX)
@@ -892,7 +893,9 @@ void RenderThreadImpl::Shutdown() {
// Context providers must be released prior to destroying the GPU channel.
shared_worker_context_provider_ = nullptr;
shared_main_thread_contexts_ = nullptr;
-
+#if defined(OS_ANDROID)
+ stream_texture_factory_ = nullptr;
+#endif
if (gpu_channel_.get())
gpu_channel_->DestroyChannel();
@@ -1430,15 +1433,46 @@ RenderThreadImpl::SharedMainThreadContextProvider() {
if (!shared_main_thread_contexts_.get() ||
shared_main_thread_contexts_->ContextGL()->GetGraphicsResetStatusKHR() !=
GL_NO_ERROR) {
- shared_main_thread_contexts_ = ContextProviderCommandBuffer::Create(
- CreateOffscreenContext3d(), RENDERER_MAINTHREAD_CONTEXT);
- if (shared_main_thread_contexts_.get() &&
- !shared_main_thread_contexts_->BindToCurrentThread())
+ scoped_refptr<ContextProviderCommandBuffer> context_provider =
+ ContextProviderCommandBuffer::Create(CreateOffscreenContext3d(),
+ RENDERER_MAINTHREAD_CONTEXT);
+ if (!context_provider.get()) {
+ LOG(ERROR) << "Failed to get context3d for media player";
+ return NULL;
+ }
+ if (context_provider.get() && context_provider->BindToCurrentThread()) {
+#if defined(OS_ANDROID)
+ // Create shared StreamTextureFactoryImpl per RenderThreadImpl when we
no sievers 2015/11/06 22:08:41 can you move this android block to GetStreamTextur
sivag 2015/11/09 14:06:32 Done.
+ // create ContextProviderCommandBuffer.
+ scoped_refptr<GpuChannelHost> gpu_channel_host(EstablishGpuChannelSync(
+ CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE));
+ if (!gpu_channel_host.get()) {
+ LOG(ERROR) << "Failed to establish GPU channel for media player";
+ stream_texture_factory_ = NULL;
+ } else {
+ stream_texture_factory_ = StreamTextureFactoryImpl::Create(
+ context_provider, gpu_channel_host.get());
+ }
+#endif
+ shared_main_thread_contexts_ = context_provider;
+ } else
shared_main_thread_contexts_ = NULL;
}
return shared_main_thread_contexts_;
}
+#if defined(OS_ANDROID)
+scoped_refptr<StreamTextureFactory> RenderThreadImpl::GetStreamTexureFactory() {
+ DCHECK(IsMainThread());
+ if (!stream_texture_factory_.get()) {
+ // StreamTextureFactoryImpl is created while creating
+ // ContextProviderCommandBuffer.
+ SharedMainThreadContextProvider();
+ }
+ return stream_texture_factory_;
+}
+#endif
+
AudioRendererMixerManager* RenderThreadImpl::GetAudioRendererMixerManager() {
if (!audio_renderer_mixer_manager_) {
audio_renderer_mixer_manager_.reset(new AudioRendererMixerManager());

Powered by Google App Engine
This is Rietveld 408576698