Home | History | Annotate | Download | only in gpu
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "content/common/gpu/devtools_gpu_instrumentation.h"
      6 
      7 #include "base/logging.h"
      8 #include "base/time/time.h"
      9 #include "content/common/gpu/devtools_gpu_agent.h"
     10 #include "content/common/gpu/gpu_channel.h"
     11 #include "content/common/gpu/gpu_channel_manager.h"
     12 
     13 namespace content {
     14 
     15 bool GpuEventsDispatcher::enabled_ = false;
     16 
     17 GpuEventsDispatcher::GpuEventsDispatcher() {
     18 }
     19 
     20 GpuEventsDispatcher::~GpuEventsDispatcher() {
     21 }
     22 
     23 void GpuEventsDispatcher::AddProcessor(DevToolsGpuAgent* processor) {
     24   DCHECK(CalledOnValidThread());
     25   processors_.push_back(processor);
     26   enabled_ = !processors_.empty();
     27 }
     28 
     29 void GpuEventsDispatcher::RemoveProcessor(DevToolsGpuAgent* processor) {
     30   DCHECK(CalledOnValidThread());
     31   processors_.erase(
     32       std::remove(processors_.begin(), processors_.end(), processor),
     33       processors_.end());
     34   enabled_ = !processors_.empty();
     35 }
     36 
     37 // static
     38 void GpuEventsDispatcher::DoFireEvent(EventPhase phase,
     39                                       GpuCommandBufferStub* stub) {
     40   TimeTicks timestamp = base::TimeTicks::NowFromSystemTraceTime();
     41   GpuEventsDispatcher* self =
     42       stub->channel()->gpu_channel_manager()->gpu_devtools_events_dispatcher();
     43   DCHECK(self->CalledOnValidThread());
     44   std::vector<DevToolsGpuAgent*>::iterator it;
     45   for (it = self->processors_.begin(); it != self->processors_.end(); ++it) {
     46     (*it)->ProcessEvent(timestamp, phase, stub);
     47   }
     48 }
     49 
     50 } // namespace
     51