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

Side by Side Diff: content/browser/gpu/browser_gpu_channel_host_factory.cc

Issue 445413003: Creating a framework for suppressing pollution of the profiler data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing unit tests again. Created 6 years, 3 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/tracked_objects_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/gpu/browser_gpu_channel_host_factory.h" 5 #include "content/browser/gpu/browser_gpu_channel_host_factory.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "base/threading/thread_restrictions.h" 10 #include "base/threading/thread_restrictions.h"
11 #include "base/tracked_objects.h"
11 #include "content/browser/gpu/gpu_data_manager_impl.h" 12 #include "content/browser/gpu/gpu_data_manager_impl.h"
12 #include "content/browser/gpu/gpu_memory_buffer_factory_host_impl.h" 13 #include "content/browser/gpu/gpu_memory_buffer_factory_host_impl.h"
13 #include "content/browser/gpu/gpu_process_host.h" 14 #include "content/browser/gpu/gpu_process_host.h"
14 #include "content/browser/gpu/gpu_surface_tracker.h" 15 #include "content/browser/gpu/gpu_surface_tracker.h"
15 #include "content/common/child_process_host_impl.h" 16 #include "content/common/child_process_host_impl.h"
16 #include "content/common/gpu/client/gpu_memory_buffer_impl.h" 17 #include "content/common/gpu/client/gpu_memory_buffer_impl.h"
17 #include "content/common/gpu/gpu_messages.h" 18 #include "content/common/gpu/gpu_messages.h"
18 #include "content/public/browser/browser_thread.h" 19 #include "content/public/browser/browser_thread.h"
19 #include "content/public/browser/gpu_data_manager.h" 20 #include "content/public/browser/gpu_data_manager.h"
20 #include "content/public/common/content_client.h" 21 #include "content/public/common/content_client.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 BrowserGpuChannelHostFactory* factory = 190 BrowserGpuChannelHostFactory* factory =
190 BrowserGpuChannelHostFactory::instance(); 191 BrowserGpuChannelHostFactory::instance();
191 factory->GpuChannelEstablished(); 192 factory->GpuChannelEstablished();
192 finished_ = true; 193 finished_ = true;
193 } 194 }
194 } 195 }
195 196
196 void BrowserGpuChannelHostFactory::EstablishRequest::Wait() { 197 void BrowserGpuChannelHostFactory::EstablishRequest::Wait() {
197 DCHECK(main_loop_->BelongsToCurrentThread()); 198 DCHECK(main_loop_->BelongsToCurrentThread());
198 { 199 {
200 // Since the current task synchronously waits for establishing a GPU
201 // channel, it shouldn't be tallied because its execution time has nothing
202 // to do with its efficiency. Using task stopwatch to exclude the waiting
203 // time from the current task run time.
204 tracked_objects::TaskStopwatch stopwatch;
199 // We're blocking the UI thread, which is generally undesirable. 205 // We're blocking the UI thread, which is generally undesirable.
200 // In this case we need to wait for this before we can show any UI 206 // In this case we need to wait for this before we can show any UI
201 // /anyway/, so it won't cause additional jank. 207 // /anyway/, so it won't cause additional jank.
202 // TODO(piman): Make this asynchronous (http://crbug.com/125248). 208 // TODO(piman): Make this asynchronous (http://crbug.com/125248).
203 TRACE_EVENT0("browser", 209 TRACE_EVENT0("browser",
204 "BrowserGpuChannelHostFactory::EstablishGpuChannelSync"); 210 "BrowserGpuChannelHostFactory::EstablishGpuChannelSync");
205 base::ThreadRestrictions::ScopedAllowWait allow_wait; 211 base::ThreadRestrictions::ScopedAllowWait allow_wait;
206 event_.Wait(); 212 event_.Wait();
213
214 stopwatch.Stop();
207 } 215 }
208 FinishOnMain(); 216 FinishOnMain();
209 } 217 }
210 218
211 void BrowserGpuChannelHostFactory::EstablishRequest::Cancel() { 219 void BrowserGpuChannelHostFactory::EstablishRequest::Cancel() {
212 DCHECK(main_loop_->BelongsToCurrentThread()); 220 DCHECK(main_loop_->BelongsToCurrentThread());
213 finished_ = true; 221 finished_ = true;
214 } 222 }
215 223
216 bool BrowserGpuChannelHostFactory::CanUseForTesting() { 224 bool BrowserGpuChannelHostFactory::CanUseForTesting() {
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 void BrowserGpuChannelHostFactory::OnGpuMemoryBufferCreated( 485 void BrowserGpuChannelHostFactory::OnGpuMemoryBufferCreated(
478 AllocateGpuMemoryBufferRequest* request, 486 AllocateGpuMemoryBufferRequest* request,
479 scoped_ptr<GpuMemoryBufferImpl> buffer) { 487 scoped_ptr<GpuMemoryBufferImpl> buffer) {
480 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 488 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
481 489
482 request->result = buffer.PassAs<gfx::GpuMemoryBuffer>(); 490 request->result = buffer.PassAs<gfx::GpuMemoryBuffer>();
483 request->event.Signal(); 491 request->event.Signal();
484 } 492 }
485 493
486 } // namespace content 494 } // namespace content
OLDNEW
« no previous file with comments | « base/tracked_objects_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698