summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsievers <sievers@chromium.org>2014-11-21 13:22:00 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-21 21:22:43 +0000
commit96221b776737fb9a534be5b1e293402db4841a73 (patch)
treebe416fbaa4006452aca5aac6deb6d346123e0155
parent1c65b081a4eda9f5bed397cc6d4a59ec14f7e8e1 (diff)
downloadchromium_src-96221b776737fb9a534be5b1e293402db4841a73.zip
chromium_src-96221b776737fb9a534be5b1e293402db4841a73.tar.gz
chromium_src-96221b776737fb9a534be5b1e293402db4841a73.tar.bz2
Android: Avoid blocking UI thread at at startup
GetCompositingSurface() needs the GPU channel id. It currently creates a context because it creates the ImageTransportFactory singleton. Make GetChannelID() static instead. Review URL: https://codereview.chromium.org/741933002 Cr-Commit-Position: refs/heads/master@{#305285}
-rw-r--r--content/browser/renderer_host/image_transport_factory_android.cc8
-rw-r--r--content/browser/renderer_host/image_transport_factory_android.h2
-rw-r--r--content/browser/renderer_host/render_widget_host_view_android.cc3
-rw-r--r--content/browser/renderer_host/test/no_transport_image_transport_factory_android.cc5
-rw-r--r--content/browser/renderer_host/test/no_transport_image_transport_factory_android.h1
5 files changed, 7 insertions, 12 deletions
diff --git a/content/browser/renderer_host/image_transport_factory_android.cc b/content/browser/renderer_host/image_transport_factory_android.cc
index 41e3156..1ac7b23 100644
--- a/content/browser/renderer_host/image_transport_factory_android.cc
+++ b/content/browser/renderer_host/image_transport_factory_android.cc
@@ -39,9 +39,6 @@ class CmdBufferImageTransportFactory : public ImageTransportFactoryAndroid {
virtual ~CmdBufferImageTransportFactory();
virtual GLHelper* GetGLHelper() override;
- virtual uint32 GetChannelID() override {
- return BrowserGpuChannelHostFactory::instance()->GetGpuChannelId();
- }
private:
scoped_ptr<WebGraphicsContext3DCommandBufferImpl> context_;
@@ -104,6 +101,11 @@ GLHelper* CmdBufferImageTransportFactory::GetGLHelper() {
} // anonymous namespace
// static
+uint32 ImageTransportFactoryAndroid::GetChannelID() {
+ return BrowserGpuChannelHostFactory::instance()->GetGpuChannelId();
+}
+
+// static
void ImageTransportFactoryAndroid::InitializeForUnitTests(
scoped_ptr<ImageTransportFactoryAndroid> test_factory) {
DCHECK(!g_factory);
diff --git a/content/browser/renderer_host/image_transport_factory_android.h b/content/browser/renderer_host/image_transport_factory_android.h
index 2562381..ea2cd99 100644
--- a/content/browser/renderer_host/image_transport_factory_android.h
+++ b/content/browser/renderer_host/image_transport_factory_android.h
@@ -42,7 +42,7 @@ class CONTENT_EXPORT ImageTransportFactoryAndroid {
static ImageTransportFactoryAndroid* GetInstance();
virtual GLHelper* GetGLHelper() = 0;
- virtual uint32 GetChannelID() = 0;
+ static uint32 GetChannelID();
static void AddObserver(ImageTransportFactoryAndroidObserver* observer);
static void RemoveObserver(ImageTransportFactoryAndroidObserver* observer);
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index 52fe3f7..47d3542 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -1321,8 +1321,7 @@ gfx::GLSurfaceHandle RenderWidgetHostViewAndroid::GetCompositingSurface() {
gfx::GLSurfaceHandle handle =
gfx::GLSurfaceHandle(gfx::kNullPluginWindow, gfx::NULL_TRANSPORT);
if (CompositorImpl::IsInitialized()) {
- handle.parent_client_id =
- ImageTransportFactoryAndroid::GetInstance()->GetChannelID();
+ handle.parent_client_id = ImageTransportFactoryAndroid::GetChannelID();
}
return handle;
}
diff --git a/content/browser/renderer_host/test/no_transport_image_transport_factory_android.cc b/content/browser/renderer_host/test/no_transport_image_transport_factory_android.cc
index 23a738e..a0b5f1c71 100644
--- a/content/browser/renderer_host/test/no_transport_image_transport_factory_android.cc
+++ b/content/browser/renderer_host/test/no_transport_image_transport_factory_android.cc
@@ -29,9 +29,4 @@ GLHelper* NoTransportImageTransportFactoryAndroid::GetGLHelper() {
return gl_helper_.get();
}
-uint32 NoTransportImageTransportFactoryAndroid::GetChannelID() {
- NOTREACHED();
- return 0;
-}
-
} // namespace content
diff --git a/content/browser/renderer_host/test/no_transport_image_transport_factory_android.h b/content/browser/renderer_host/test/no_transport_image_transport_factory_android.h
index 44a7747..fafaad2 100644
--- a/content/browser/renderer_host/test/no_transport_image_transport_factory_android.h
+++ b/content/browser/renderer_host/test/no_transport_image_transport_factory_android.h
@@ -28,7 +28,6 @@ class NoTransportImageTransportFactoryAndroid
NoTransportImageTransportFactoryAndroid();
virtual ~NoTransportImageTransportFactoryAndroid();
virtual GLHelper* GetGLHelper() override;
- virtual uint32 GetChannelID() override;
private:
scoped_ptr<ui::ContextFactory> context_factory_;