summaryrefslogtreecommitdiffstats
path: root/content/common/gpu/gpu_channel.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/common/gpu/gpu_channel.cc')
-rw-r--r--content/common/gpu/gpu_channel.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/content/common/gpu/gpu_channel.cc b/content/common/gpu/gpu_channel.cc
index b7a8349..81563c5 100644
--- a/content/common/gpu/gpu_channel.cc
+++ b/content/common/gpu/gpu_channel.cc
@@ -9,6 +9,7 @@
#include "content/common/gpu/gpu_channel.h"
#include "base/command_line.h"
+#include "base/debug/trace_event.h"
#include "base/process_util.h"
#include "base/string_util.h"
#include "content/common/child_process.h"
@@ -254,6 +255,8 @@ void GpuChannel::OnCreateOffscreenCommandBuffer(
0, 0, watchdog_));
router_.AddRoute(*route_id, stub.get());
stubs_.AddWithID(stub.release(), *route_id);
+ TRACE_EVENT1("gpu", "GpuChannel::OnCreateOffscreenCommandBuffer",
+ "route_id", route_id);
#else
*route_id = MSG_ROUTING_NONE;
#endif
@@ -261,7 +264,14 @@ void GpuChannel::OnCreateOffscreenCommandBuffer(
void GpuChannel::OnDestroyCommandBuffer(int32 route_id) {
#if defined(ENABLE_GPU)
+ TRACE_EVENT1("gpu", "GpuChannel::OnDestroyCommandBuffer",
+ "route_id", route_id);
if (router_.ResolveRoute(route_id)) {
+ GpuCommandBufferStub* stub = stubs_.Lookup(route_id);
+ // In case the renderer is currently blocked waiting for a sync reply from
+ // the stub, allow the stub to clean up and unblock pending messages here:
+ if (stub != NULL)
+ stub->CommandBufferWasDestroyed();
router_.RemoveRoute(route_id);
stubs_.Remove(route_id);
}