Index: gpu/gles2_conform_support/egl/display.cc |
diff --git a/gpu/gles2_conform_support/egl/display.cc b/gpu/gles2_conform_support/egl/display.cc |
index 82c60135ecb075338e7545935f3e0786f1a1554d..6aefdf2c78146b2194432b568ae9af3d3fb046fa 100644 |
--- a/gpu/gles2_conform_support/egl/display.cc |
+++ b/gpu/gles2_conform_support/egl/display.cc |
@@ -30,29 +30,8 @@ Display::~Display() { |
} |
bool Display::Initialize() { |
- scoped_ptr<gpu::CommandBufferService> command_buffer( |
- new gpu::CommandBufferService); |
- if (!command_buffer->Initialize()) |
- return false; |
- |
- int32 transfer_buffer_id = |
- command_buffer->CreateTransferBuffer(kTransferBufferSize, -1); |
- gpu::Buffer transfer_buffer = |
- command_buffer->GetTransferBuffer(transfer_buffer_id); |
- if (transfer_buffer.ptr == NULL) |
- return false; |
- |
- scoped_ptr<gpu::gles2::GLES2CmdHelper> cmd_helper( |
- new gpu::gles2::GLES2CmdHelper(command_buffer.get())); |
- if (!cmd_helper->Initialize(kCommandBufferSize)) |
- return false; |
- |
gles2::Initialize(); |
- |
is_initialized_ = true; |
- command_buffer_.reset(command_buffer.release()); |
- transfer_buffer_id_ = transfer_buffer_id; |
- gles2_cmd_helper_.reset(cmd_helper.release()); |
return true; |
} |
@@ -103,13 +82,18 @@ EGLSurface Display::CreateWindowSurface(EGLConfig config, |
return EGL_NO_SURFACE; |
} |
+ scoped_ptr<gpu::CommandBufferService> command_buffer( |
+ new gpu::CommandBufferService); |
+ if (!command_buffer->Initialize()) |
+ return false; |
+ |
gpu::gles2::ContextGroup::Ref group(new gpu::gles2::ContextGroup(true)); |
decoder_.reset(gpu::gles2::GLES2Decoder::Create(group.get())); |
if (!decoder_.get()) |
return EGL_NO_SURFACE; |
- gpu_scheduler_.reset(new gpu::GpuScheduler(command_buffer_.get(), |
+ gpu_scheduler_.reset(new gpu::GpuScheduler(command_buffer.get(), |
decoder_.get(), |
NULL)); |
@@ -135,13 +119,28 @@ EGLSurface Display::CreateWindowSurface(EGLConfig config, |
return EGL_NO_SURFACE; |
} |
- command_buffer_->SetPutOffsetChangeCallback( |
+ command_buffer->SetPutOffsetChangeCallback( |
base::Bind(&gpu::GpuScheduler::PutChanged, |
base::Unretained(gpu_scheduler_.get()))); |
- command_buffer_->SetGetBufferChangeCallback( |
+ command_buffer->SetGetBufferChangeCallback( |
base::Bind(&gpu::GpuScheduler::SetGetBuffer, |
base::Unretained(gpu_scheduler_.get()))); |
+ scoped_ptr<gpu::gles2::GLES2CmdHelper> cmd_helper( |
+ new gpu::gles2::GLES2CmdHelper(command_buffer.get())); |
+ if (!cmd_helper->Initialize(kCommandBufferSize)) |
+ return false; |
+ |
+ int32 transfer_buffer_id = |
+ command_buffer->CreateTransferBuffer(kTransferBufferSize, -1); |
+ gpu::Buffer transfer_buffer = |
+ command_buffer->GetTransferBuffer(transfer_buffer_id); |
+ if (transfer_buffer.ptr == NULL) |
+ return false; |
+ |
+ command_buffer_.reset(command_buffer.release()); |
+ transfer_buffer_id_ = transfer_buffer_id; |
+ gles2_cmd_helper_.reset(cmd_helper.release()); |
surface_.reset(new Surface(win)); |
return surface_.get(); |