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

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

Issue 213493002: content: Add multi-proc surface texture support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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/threading/thread_restrictions.h" 9 #include "base/threading/thread_restrictions.h"
10 #include "content/browser/gpu/gpu_data_manager_impl.h" 10 #include "content/browser/gpu/gpu_data_manager_impl.h"
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 return scoped_ptr<gfx::GpuMemoryBuffer>(); 386 return scoped_ptr<gfx::GpuMemoryBuffer>();
387 387
388 scoped_ptr<GpuMemoryBufferImplShm> buffer( 388 scoped_ptr<GpuMemoryBufferImplShm> buffer(
389 new GpuMemoryBufferImplShm(gfx::Size(width, height), internalformat)); 389 new GpuMemoryBufferImplShm(gfx::Size(width, height), internalformat));
390 if (!buffer->InitializeFromSharedMemory(shm.Pass())) 390 if (!buffer->InitializeFromSharedMemory(shm.Pass()))
391 return scoped_ptr<gfx::GpuMemoryBuffer>(); 391 return scoped_ptr<gfx::GpuMemoryBuffer>();
392 392
393 return buffer.PassAs<gfx::GpuMemoryBuffer>(); 393 return buffer.PassAs<gfx::GpuMemoryBuffer>();
394 } 394 }
395 395
396 void BrowserGpuChannelHostFactory::CreateSurfaceTextureOnIO(
397 int32 surface_texture_id,
398 base::ProcessHandle process_handle,
399 const CreateSurfaceTextureCallback& callback) {
400 GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_);
401 if (!host) {
402 SurfaceTextureCreatedOnIO(callback);
403 return;
404 }
405
406 host->CreateSurfaceTexture(
407 surface_texture_id,
408 process_handle,
409 base::Bind(&BrowserGpuChannelHostFactory::SurfaceTextureCreatedOnIO,
410 callback));
411 }
412
413 // static
414 void BrowserGpuChannelHostFactory::SurfaceTextureCreatedOnIO(
415 const CreateSurfaceTextureCallback& callback) {
416 BrowserThread::PostTask(
417 BrowserThread::UI,
418 FROM_HERE,
419 base::Bind(&BrowserGpuChannelHostFactory::OnSurfaceTextureCreated,
420 callback));
421 }
422
423 // static
424 void BrowserGpuChannelHostFactory::OnSurfaceTextureCreated(
425 const CreateSurfaceTextureCallback& callback) {
426 callback.Run();
427 }
428
429 void BrowserGpuChannelHostFactory::CreateSurfaceTexture(
430 int32 surface_texture_id,
431 base::ProcessHandle process_handle,
432 const CreateSurfaceTextureCallback& callback) {
433 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
434 GetIOLoopProxy()->PostTask(FROM_HERE, base::Bind(
435 &BrowserGpuChannelHostFactory::CreateSurfaceTextureOnIO,
436 base::Unretained(this),
437 surface_texture_id,
438 process_handle,
439 callback));
440 }
441
396 // static 442 // static
397 void BrowserGpuChannelHostFactory::AddFilterOnIO( 443 void BrowserGpuChannelHostFactory::AddFilterOnIO(
398 int host_id, 444 int host_id,
399 scoped_refptr<IPC::ChannelProxy::MessageFilter> filter) { 445 scoped_refptr<IPC::ChannelProxy::MessageFilter> filter) {
400 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 446 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
401 447
402 GpuProcessHost* host = GpuProcessHost::FromID(host_id); 448 GpuProcessHost* host = GpuProcessHost::FromID(host_id);
403 if (host) 449 if (host)
404 host->AddFilter(filter.get()); 450 host->AddFilter(filter.get());
405 } 451 }
(...skipping 15 matching lines...) Expand all
421 filter->AddRoute(MSG_ROUTING_CONTROL, handler); 467 filter->AddRoute(MSG_ROUTING_CONTROL, handler);
422 468
423 GetIOLoopProxy()->PostTask( 469 GetIOLoopProxy()->PostTask(
424 FROM_HERE, 470 FROM_HERE,
425 base::Bind(&BrowserGpuChannelHostFactory::AddFilterOnIO, 471 base::Bind(&BrowserGpuChannelHostFactory::AddFilterOnIO,
426 gpu_host_id_, 472 gpu_host_id_,
427 filter)); 473 filter));
428 } 474 }
429 475
430 } // namespace content 476 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/gpu/browser_gpu_channel_host_factory.h ('k') | content/browser/gpu/gpu_process_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698