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

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

Issue 331723003: gpu: Remove Create/DeleteImage IPC by adding an X11_PIXMAP_BUFFER GpuMemoryBuffer type. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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
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"
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 // so it won't cause additional jank. 289 // so it won't cause additional jank.
290 // TODO(piman): Make this asynchronous (http://crbug.com/125248). 290 // TODO(piman): Make this asynchronous (http://crbug.com/125248).
291 TRACE_EVENT0("browser", 291 TRACE_EVENT0("browser",
292 "BrowserGpuChannelHostFactory::CreateViewCommandBuffer"); 292 "BrowserGpuChannelHostFactory::CreateViewCommandBuffer");
293 base::ThreadRestrictions::ScopedAllowWait allow_wait; 293 base::ThreadRestrictions::ScopedAllowWait allow_wait;
294 request.event.Wait(); 294 request.event.Wait();
295 return request.succeeded; 295 return request.succeeded;
296 } 296 }
297 297
298 void BrowserGpuChannelHostFactory::CreateImageOnIO( 298 void BrowserGpuChannelHostFactory::CreateImageOnIO(
299 gfx::PluginWindowHandle window, 299 const gfx::GpuMemoryBufferHandle& handle,
300 const gfx::Size& size,
301 unsigned internalformat,
300 int32 image_id, 302 int32 image_id,
301 const CreateImageCallback& callback) { 303 const CreateImageCallback& callback) {
302 GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_); 304 GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_);
303 if (!host) { 305 if (!host) {
304 ImageCreatedOnIO(callback, gfx::Size()); 306 ImageCreatedOnIO(callback, false);
305 return; 307 return;
306 } 308 }
307 309
308 host->CreateImage( 310 host->CreateImage(
309 window, 311 handle,
312 size,
313 internalformat,
310 gpu_client_id_, 314 gpu_client_id_,
311 image_id, 315 image_id,
312 base::Bind(&BrowserGpuChannelHostFactory::ImageCreatedOnIO, callback)); 316 base::Bind(&BrowserGpuChannelHostFactory::ImageCreatedOnIO, callback));
313 } 317 }
314 318
315 // static 319 // static
316 void BrowserGpuChannelHostFactory::ImageCreatedOnIO( 320 void BrowserGpuChannelHostFactory::ImageCreatedOnIO(
317 const CreateImageCallback& callback, const gfx::Size size) { 321 const CreateImageCallback& callback, bool succeeded) {
318 BrowserThread::PostTask( 322 BrowserThread::PostTask(
319 BrowserThread::UI, 323 BrowserThread::UI,
320 FROM_HERE, 324 FROM_HERE,
321 base::Bind(&BrowserGpuChannelHostFactory::OnImageCreated, 325 base::Bind(&BrowserGpuChannelHostFactory::OnImageCreated,
322 callback, size)); 326 callback, succeeded));
323 } 327 }
324 328
325 // static 329 // static
326 void BrowserGpuChannelHostFactory::OnImageCreated( 330 void BrowserGpuChannelHostFactory::OnImageCreated(
327 const CreateImageCallback& callback, const gfx::Size size) { 331 const CreateImageCallback& callback, bool succeeded) {
328 callback.Run(size); 332 callback.Run(succeeded);
329 } 333 }
330 334
331 void BrowserGpuChannelHostFactory::CreateImage( 335 void BrowserGpuChannelHostFactory::CreateImage(
332 gfx::PluginWindowHandle window, 336 const gfx::GpuMemoryBufferHandle& handle,
337 const gfx::Size& size,
338 unsigned internalformat,
333 int32 image_id, 339 int32 image_id,
334 const CreateImageCallback& callback) { 340 const CreateImageCallback& callback) {
335 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 341 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
336 GetIOLoopProxy()->PostTask(FROM_HERE, base::Bind( 342 GetIOLoopProxy()->PostTask(FROM_HERE, base::Bind(
337 &BrowserGpuChannelHostFactory::CreateImageOnIO, 343 &BrowserGpuChannelHostFactory::CreateImageOnIO,
338 base::Unretained(this), 344 base::Unretained(this),
339 window, 345 handle,
346 size,
347 internalformat,
340 image_id, 348 image_id,
341 callback)); 349 callback));
342 } 350 }
343 351
344 void BrowserGpuChannelHostFactory::DeleteImageOnIO( 352 void BrowserGpuChannelHostFactory::DeleteImageOnIO(
345 int32 image_id, int32 sync_point) { 353 int32 image_id, int32 sync_point) {
346 GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_); 354 GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_);
347 if (!host) { 355 if (!host) {
348 return; 356 return;
349 } 357 }
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 const gfx::GpuMemoryBufferHandle& handle, 558 const gfx::GpuMemoryBufferHandle& handle,
551 int32 sync_point) { 559 int32 sync_point) {
552 GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_); 560 GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_);
553 if (!host) 561 if (!host)
554 return; 562 return;
555 563
556 host->DestroyGpuMemoryBuffer(handle, sync_point); 564 host->DestroyGpuMemoryBuffer(handle, sync_point);
557 } 565 }
558 566
559 } // namespace content 567 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698