diff --git a/gpu/command_buffer/service/gpu_tracer_unittest.cc b/gpu/command_buffer/service/gpu_tracer_unittest.cc index 9be021248f7c7..0381d176ec122 100644 --- a/gpu/command_buffer/service/gpu_tracer_unittest.cc +++ b/gpu/command_buffer/service/gpu_tracer_unittest.cc @@ -53,7 +53,7 @@ class GPUTracerTester : public GPUTracer { public: explicit GPUTracerTester(GLES2Decoder* decoder) : GPUTracer(decoder), tracing_enabled_(0) { - gpu_timing_client_->SetCpuTimeForTesting(base::Bind(&FakeCpuTime)); + gpu_timing_client_->SetCpuTimeForTesting(base::BindRepeating(&FakeCpuTime)); // Force tracing to be dependent on our mock variable here. gpu_trace_srv_category = &tracing_enabled_; @@ -100,7 +100,7 @@ class BaseGpuTest : public GpuServiceTest { gl_fake_queries_.ExpectNoDisjointCalls(*gl_); gpu_timing_client_ = GetGLContext()->CreateGPUTimingClient(); - gpu_timing_client_->SetCpuTimeForTesting(base::Bind(&FakeCpuTime)); + gpu_timing_client_->SetCpuTimeForTesting(base::BindRepeating(&FakeCpuTime)); gl_fake_queries_.Reset(); } diff --git a/gpu/command_buffer/service/query_manager_unittest.cc b/gpu/command_buffer/service/query_manager_unittest.cc index e71355178245f..e4156821c81eb 100644 --- a/gpu/command_buffer/service/query_manager_unittest.cc +++ b/gpu/command_buffer/service/query_manager_unittest.cc @@ -562,7 +562,7 @@ TEST_F(QueryManagerTest, TimeElapsedQuery) { const base::subtle::Atomic32 kSubmitCount = 123; gl::GPUTimingFake fake_timing_queries; decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( - base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); + base::BindRepeating(&gl::GPUTimingFake::GetFakeCPUTime)); QueryManager::Query* query = CreateQuery( kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0); @@ -594,7 +594,7 @@ TEST_F(QueryManagerTest, TimeElapsedPauseResume) { const base::subtle::Atomic32 kSubmitCount = 123; gl::GPUTimingFake fake_timing_queries; decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( - base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); + base::BindRepeating(&gl::GPUTimingFake::GetFakeCPUTime)); QueryManager::Query* query = CreateQuery( kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0); @@ -699,7 +699,7 @@ TEST_F(QueryManagerTest, TimeStampQuery) { gl::GPUTimingFake fake_timing_queries; decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( - base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); + base::BindRepeating(&gl::GPUTimingFake::GetFakeCPUTime)); QueryManager::Query* query = CreateQuery( kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0); @@ -726,7 +726,7 @@ TEST_F(QueryManagerTest, TimeStampQueryPending) { gl::GPUTimingFake fake_timing_queries; decoder_->GetGLContext()->CreateGPUTimingClient()->SetCpuTimeForTesting( - base::Bind(&gl::GPUTimingFake::GetFakeCPUTime)); + base::BindRepeating(&gl::GPUTimingFake::GetFakeCPUTime)); QueryManager::Query* query = CreateQuery( kTarget, kClient1Id, shared_memory_id_, kSharedMemoryOffset, 0); diff --git a/gpu/ipc/host/shader_disk_cache.cc b/gpu/ipc/host/shader_disk_cache.cc index b758ce8f561ac..339c8ce6dbfbf 100644 --- a/gpu/ipc/host/shader_disk_cache.cc +++ b/gpu/ipc/host/shader_disk_cache.cc @@ -263,8 +263,8 @@ int ShaderDiskCacheEntry::WriteCallback(int rv) { op_type_ = WRITE_DATA; auto io_buf = base::MakeRefCounted<net::StringIOBuffer>(shader_); return entry_->WriteData(1, 0, io_buf.get(), shader_.length(), - base::Bind(&ShaderDiskCacheEntry::OnOpComplete, - weak_ptr_factory_.GetWeakPtr()), + base::BindOnce(&ShaderDiskCacheEntry::OnOpComplete, + weak_ptr_factory_.GetWeakPtr()), false); } @@ -357,8 +357,8 @@ int ShaderDiskReadHelper::OpenNextEntryComplete(int rv) { op_type_ = READ_COMPLETE; buf_ = base::MakeRefCounted<net::IOBufferWithSize>(entry_->GetDataSize(1)); return entry_->ReadData(1, 0, buf_.get(), buf_->size(), - base::Bind(&ShaderDiskReadHelper::OnOpComplete, - weak_ptr_factory_.GetWeakPtr())); + base::BindOnce(&ShaderDiskReadHelper::OnOpComplete, + weak_ptr_factory_.GetWeakPtr())); } int ShaderDiskReadHelper::ReadComplete(int rv) { @@ -416,14 +416,15 @@ void ShaderClearHelper::DoClearShaderCache(int rv) { switch (op_type_) { case VERIFY_CACHE_SETUP: rv = cache_->SetAvailableCallback( - base::Bind(&ShaderClearHelper::DoClearShaderCache, - weak_ptr_factory_.GetWeakPtr())); + base::BindRepeating(&ShaderClearHelper::DoClearShaderCache, + weak_ptr_factory_.GetWeakPtr())); op_type_ = DELETE_CACHE; break; case DELETE_CACHE: - rv = cache_->Clear(delete_begin_, delete_end_, - base::Bind(&ShaderClearHelper::DoClearShaderCache, - weak_ptr_factory_.GetWeakPtr())); + rv = cache_->Clear( + delete_begin_, delete_end_, + base::BindRepeating(&ShaderClearHelper::DoClearShaderCache, + weak_ptr_factory_.GetWeakPtr())); op_type_ = TERMINATE; break; case TERMINATE: @@ -575,7 +576,7 @@ void ShaderDiskCache::Init() { int rv = disk_cache::CreateCacheBackend( net::SHADER_CACHE, net::CACHE_BACKEND_DEFAULT, cache_path_.Append(kGpuCachePath), CacheSizeBytes(), true, nullptr, - &backend_, base::Bind(&ShaderDiskCache::CacheCreatedCallback, this)); + &backend_, base::BindOnce(&ShaderDiskCache::CacheCreatedCallback, this)); if (rv == net::OK) cache_available_ = true; diff --git a/services/ws/public/cpp/gpu/client_gpu_memory_buffer_manager.cc b/services/ws/public/cpp/gpu/client_gpu_memory_buffer_manager.cc index 3e822a3fa0d17..1b0f0128ffb17 100644 --- a/services/ws/public/cpp/gpu/client_gpu_memory_buffer_manager.cc +++ b/services/ws/public/cpp/gpu/client_gpu_memory_buffer_manager.cc @@ -4,6 +4,8 @@ #include "services/ws/public/cpp/gpu/client_gpu_memory_buffer_manager.h" +#include <utility> + #include "base/bind.h" #include "base/logging.h" #include "base/memory/shared_memory.h" @@ -17,21 +19,15 @@ #include "services/ws/public/mojom/constants.mojom.h" #include "ui/gfx/buffer_format_util.h" -using DestructionCallback = base::Callback<void(const gpu::SyncToken& sync)>; - -namespace gpu { -class GpuMemoryBufferSupport; -} - namespace ws { - namespace { void NotifyDestructionOnCorrectThread( scoped_refptr<base::SingleThreadTaskRunner> task_runner, - const DestructionCallback& callback, + gpu::GpuMemoryBufferImpl::DestructionCallback callback, const gpu::SyncToken& sync_token) { - task_runner->PostTask(FROM_HERE, base::Bind(callback, sync_token)); + task_runner->PostTask(FROM_HERE, + base::BindOnce(std::move(callback), sync_token)); } } // namespace @@ -46,15 +42,14 @@ ClientGpuMemoryBufferManager::ClientGpuMemoryBufferManager( // The thread is owned by this object. Which means the task will not run if // the object has been destroyed. So Unretained() is safe. thread_.task_runner()->PostTask( - FROM_HERE, - base::Bind(&ClientGpuMemoryBufferManager::InitThread, - base::Unretained(this), base::Passed(gpu.PassInterface()))); + FROM_HERE, base::BindOnce(&ClientGpuMemoryBufferManager::InitThread, + base::Unretained(this), gpu.PassInterface())); } ClientGpuMemoryBufferManager::~ClientGpuMemoryBufferManager() { thread_.task_runner()->PostTask( - FROM_HERE, base::Bind(&ClientGpuMemoryBufferManager::TearDownThread, - base::Unretained(this))); + FROM_HERE, base::BindOnce(&ClientGpuMemoryBufferManager::TearDownThread, + base::Unretained(this))); thread_.Stop(); } @@ -62,8 +57,8 @@ void ClientGpuMemoryBufferManager::InitThread( mojom::GpuMemoryBufferFactoryPtrInfo gpu_info) { gpu_.Bind(std::move(gpu_info)); gpu_.set_connection_error_handler( - base::Bind(&ClientGpuMemoryBufferManager::DisconnectGpuOnThread, - base::Unretained(this))); + base::BindOnce(&ClientGpuMemoryBufferManager::DisconnectGpuOnThread, + base::Unretained(this))); weak_ptr_ = weak_ptr_factory_.GetWeakPtr(); } @@ -102,7 +97,7 @@ void ClientGpuMemoryBufferManager::AllocateGpuMemoryBufferOnThread( pending_allocation_waiters_.insert(wait); gpu_->CreateGpuMemoryBuffer( gfx::GpuMemoryBufferId(++counter_), size, format, usage, - base::Bind( + base::BindOnce( &ClientGpuMemoryBufferManager::OnGpuMemoryBufferAllocatedOnThread, base::Unretained(this), handle, wait)); } @@ -125,8 +120,8 @@ void ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer( if (!thread_.task_runner()->BelongsToCurrentThread()) { thread_.task_runner()->PostTask( FROM_HERE, - base::Bind(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer, - base::Unretained(this), id, sync_token)); + base::BindOnce(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer, + base::Unretained(this), id, sync_token)); return; } @@ -149,22 +144,22 @@ ClientGpuMemoryBufferManager::CreateGpuMemoryBuffer( base::WaitableEvent::InitialState::NOT_SIGNALED); thread_.task_runner()->PostTask( FROM_HERE, - base::Bind(&ClientGpuMemoryBufferManager::AllocateGpuMemoryBufferOnThread, - base::Unretained(this), size, format, usage, &gmb_handle, - &wait)); + base::BindOnce( + &ClientGpuMemoryBufferManager::AllocateGpuMemoryBufferOnThread, + base::Unretained(this), size, format, usage, &gmb_handle, &wait)); wait.Wait(); if (gmb_handle.is_null()) return nullptr; auto gmb_handle_id = gmb_handle.id; - DestructionCallback callback = - base::Bind(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer, - weak_ptr_, gmb_handle_id); - std::unique_ptr<gpu::GpuMemoryBufferImpl> buffer( + auto callback = + base::BindOnce(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer, + weak_ptr_, gmb_handle_id); + std::unique_ptr<gpu::GpuMemoryBufferImpl> buffer = gpu_memory_buffer_support_->CreateGpuMemoryBufferImplFromHandle( std::move(gmb_handle), size, format, usage, - base::Bind(&NotifyDestructionOnCorrectThread, thread_.task_runner(), - callback))); + base::BindOnce(&NotifyDestructionOnCorrectThread, + thread_.task_runner(), std::move(callback))); if (!buffer) { DeletedGpuMemoryBuffer(gmb_handle_id, gpu::SyncToken()); return nullptr; diff --git a/ui/gl/android/surface_texture.cc b/ui/gl/android/surface_texture.cc index a781d502a74ec..5c6f42534ef41 100644 --- a/ui/gl/android/surface_texture.cc +++ b/ui/gl/android/surface_texture.cc @@ -5,6 +5,7 @@ #include "ui/gl/android/surface_texture.h" #include <android/native_window_jni.h> +#include <utility> #include "base/android/jni_android.h" #include "base/logging.h" @@ -31,19 +32,22 @@ SurfaceTexture::~SurfaceTexture() { Java_SurfaceTexturePlatformWrapper_destroy(env, j_surface_texture_); } -void SurfaceTexture::SetFrameAvailableCallback(const base::Closure& callback) { +void SurfaceTexture::SetFrameAvailableCallback( + base::RepeatingClosure callback) { JNIEnv* env = base::android::AttachCurrentThread(); Java_SurfaceTexturePlatformWrapper_setFrameAvailableCallback( env, j_surface_texture_, - reinterpret_cast<intptr_t>(new SurfaceTextureListener(callback, false))); + reinterpret_cast<intptr_t>( + new SurfaceTextureListener(std::move(callback), false))); } void SurfaceTexture::SetFrameAvailableCallbackOnAnyThread( - const base::Closure& callback) { + base::RepeatingClosure callback) { JNIEnv* env = base::android::AttachCurrentThread(); Java_SurfaceTexturePlatformWrapper_setFrameAvailableCallback( env, j_surface_texture_, - reinterpret_cast<intptr_t>(new SurfaceTextureListener(callback, true))); + reinterpret_cast<intptr_t>( + new SurfaceTextureListener(std::move(callback), true))); } void SurfaceTexture::UpdateTexImage() { diff --git a/ui/gl/android/surface_texture.h b/ui/gl/android/surface_texture.h index 451fc7514b43c..b2ad7af185037 100644 --- a/ui/gl/android/surface_texture.h +++ b/ui/gl/android/surface_texture.h @@ -29,13 +29,13 @@ class GL_EXPORT SurfaceTexture // Note: Since callbacks come in from Java objects that might outlive objects // being referenced from the callback, the only robust way here is to create // the callback from a weak pointer to your object. - void SetFrameAvailableCallback(const base::Closure& callback); + void SetFrameAvailableCallback(base::RepeatingClosure callback); // Set the listener callback, but allow it to be invoked on any thread. The // same caveats apply as SetFrameAvailableCallback, plus whatever other issues // show up due to multithreading (e.g., don't bind the Closure to a method // via a weak ref). - void SetFrameAvailableCallbackOnAnyThread(const base::Closure& callback); + void SetFrameAvailableCallbackOnAnyThread(base::RepeatingClosure callback); // Update the texture image to the most recent frame from the image stream. void UpdateTexImage(); diff --git a/ui/gl/android/surface_texture_listener.cc b/ui/gl/android/surface_texture_listener.cc index 091facced5e68..74be4845be4c0 100644 --- a/ui/gl/android/surface_texture_listener.cc +++ b/ui/gl/android/surface_texture_listener.cc @@ -4,6 +4,8 @@ #include "ui/gl/android/surface_texture_listener.h" +#include <utility> + #include "base/location.h" #include "base/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" @@ -13,9 +15,9 @@ using base::android::JavaParamRef; namespace gl { -SurfaceTextureListener::SurfaceTextureListener(const base::Closure& callback, +SurfaceTextureListener::SurfaceTextureListener(base::RepeatingClosure callback, bool use_any_thread) - : callback_(callback), + : callback_(std::move(callback)), browser_loop_(base::ThreadTaskRunnerHandle::Get()), use_any_thread_(use_any_thread) {} diff --git a/ui/gl/android/surface_texture_listener.h b/ui/gl/android/surface_texture_listener.h index d02218587787a..bedfb33b2d6ea 100644 --- a/ui/gl/android/surface_texture_listener.h +++ b/ui/gl/android/surface_texture_listener.h @@ -38,12 +38,12 @@ class GL_EXPORT SurfaceTextureListener { // If use_any_thread is true, then the FrameAvailable callback will happen // on whatever thread calls us. Otherwise, we will call it back on the same // thread that was used to construct us. - SurfaceTextureListener(const base::Closure& callback, bool use_any_thread); + SurfaceTextureListener(base::RepeatingClosure callback, bool use_any_thread); ~SurfaceTextureListener(); friend class SurfaceTexture; - base::Closure callback_; + base::RepeatingClosure callback_; scoped_refptr<base::SingleThreadTaskRunner> browser_loop_; diff --git a/ui/gl/gl_context_cgl.cc b/ui/gl/gl_context_cgl.cc index 1ee50da4b1e36..a4072b6e14460 100644 --- a/ui/gl/gl_context_cgl.cc +++ b/ui/gl/gl_context_cgl.cc @@ -159,7 +159,8 @@ void GLContextCGL::Destroy() { // Delay releasing the pixel format for 10 seconds to reduce the number of // unnecessary GPU switches. base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( - FROM_HERE, base::Bind(&CGLReleasePixelFormat, discrete_pixelformat_), + FROM_HERE, + base::BindOnce(&CGLReleasePixelFormat, discrete_pixelformat_), base::TimeDelta::FromSeconds(10)); } else { CGLReleasePixelFormat(discrete_pixelformat_); diff --git a/ui/gl/gpu_timing.cc b/ui/gl/gpu_timing.cc index dbaf95e176e77..78a06f7b56135 100644 --- a/ui/gl/gpu_timing.cc +++ b/ui/gl/gpu_timing.cc @@ -4,6 +4,8 @@ #include "ui/gl/gpu_timing.h" +#include <utility> + #include "base/containers/circular_deque.h" #include "base/macros.h" #include "base/memory/ptr_util.h" @@ -30,7 +32,7 @@ int32_t QueryTimestampBits() { class GPUTimingImpl : public GPUTiming { public: - GPUTimingImpl(GLContextReal* context); + explicit GPUTimingImpl(GLContextReal* context); ~GPUTimingImpl() override; void ForceTimeElapsedQuery() { force_time_elapsed_query_ = true; } @@ -51,8 +53,8 @@ class GPUTimingImpl : public GPUTiming { ? (base::TimeTicks::Now() - base::TimeTicks()).InMicroseconds() : cpu_time_for_testing_.Run(); } - void SetCpuTimeForTesting(const base::Callback<int64_t(void)>& cpu_time) { - cpu_time_for_testing_ = cpu_time; + void SetCpuTimeForTesting(base::RepeatingCallback<int64_t(void)> cpu_time) { + cpu_time_for_testing_ = std::move(cpu_time); } void UpdateQueryResults(); @@ -75,7 +77,7 @@ class GPUTimingImpl : public GPUTiming { private: scoped_refptr<GPUTimingClient> CreateGPUTimingClient() override; - base::Callback<int64_t(void)> cpu_time_for_testing_; + base::RepeatingCallback<int64_t(void)> cpu_time_for_testing_; GPUTiming::TimerType timer_type_ = GPUTiming::kTimerTypeInvalid; uint32_t disjoint_counter_ = 0; int64_t offset_ = 0; // offset cache when timer_type_ == kTimerTypeARB @@ -84,7 +86,7 @@ class GPUTimingImpl : public GPUTiming { int32_t timestamp_bit_count_gl_ = -1; // gl implementation timestamp bits uint32_t next_timer_query_id_ = 0; - uint32_t next_good_timer_query_id_ = 0; // identify bad ids for disjoints. + uint32_t next_good_timer_query_id_ = 0; // identify bad ids for disjoints. uint32_t query_disjoint_count_ = 0; // Extra state tracking data for elapsed timer queries. @@ -122,7 +124,7 @@ class QueryResult : public base::RefCounted<QueryResult> { class TimerQuery : public base::RefCounted<TimerQuery> { public: - TimerQuery(uint32_t next_id); + explicit TimerQuery(uint32_t next_id); virtual void Destroy() = 0; // Returns true when UpdateQueryResults() is ready to be called. @@ -135,7 +137,7 @@ class TimerQuery : public base::RefCounted<TimerQuery> { virtual void PrepareNextUpdate(scoped_refptr<TimerQuery> prev) {} uint32_t timer_query_id_ = 0; - int64_t time_stamp_ = 0; // Timestamp of the query, could be estimated. + int64_t time_stamp_ = 0; // Timestamp of the query, could be estimated. protected: friend class base::RefCounted<TimerQuery>; @@ -271,8 +273,7 @@ class TimeElapsedTimerQuery : public TimerQuery { class TimeStampTimerQuery : public TimerQuery { public: - TimeStampTimerQuery(uint32_t next_id) - : TimerQuery(next_id) { + explicit TimeStampTimerQuery(uint32_t next_id) : TimerQuery(next_id) { glGenQueries(1, &gl_query_id_); } @@ -649,9 +650,9 @@ int64_t GPUTimingClient::GetCurrentCPUTime() { } void GPUTimingClient::SetCpuTimeForTesting( - const base::Callback<int64_t(void)>& cpu_time) { + base::RepeatingCallback<int64_t(void)> cpu_time) { DCHECK(gpu_timing_); - gpu_timing_->SetCpuTimeForTesting(cpu_time); + gpu_timing_->SetCpuTimeForTesting(std::move(cpu_time)); } bool GPUTimingClient::IsForceTimeElapsedQuery() { diff --git a/ui/gl/gpu_timing.h b/ui/gl/gpu_timing.h index 561f8a77003b3..e9b7fcdafd458 100644 --- a/ui/gl/gpu_timing.h +++ b/ui/gl/gpu_timing.h @@ -141,7 +141,7 @@ class GL_EXPORT GPUTimingClient bool CheckAndResetTimerErrors(); int64_t GetCurrentCPUTime(); - void SetCpuTimeForTesting(const base::Callback<int64_t(void)>& cpu_time); + void SetCpuTimeForTesting(base::RepeatingCallback<int64_t(void)> cpu_time); bool IsForceTimeElapsedQuery(); void ForceTimeElapsedQuery(); diff --git a/ui/gl/gpu_timing_unittest.cc b/ui/gl/gpu_timing_unittest.cc index 0eb14c845a9dc..2384ce241d815 100644 --- a/ui/gl/gpu_timing_unittest.cc +++ b/ui/gl/gpu_timing_unittest.cc @@ -71,7 +71,8 @@ class GPUTimingTest : public testing::Test { scoped_refptr<GPUTimingClient> client = context_->CreateGPUTimingClient(); if (!cpu_time_bounded_) { - client->SetCpuTimeForTesting(base::Bind(&GPUTimingFake::GetFakeCPUTime)); + client->SetCpuTimeForTesting( + base::BindRepeating(&GPUTimingFake::GetFakeCPUTime)); cpu_time_bounded_ = true; } return client; @@ -93,7 +94,7 @@ TEST_F(GPUTimingTest, FakeTimerTest) { gpu_timing_fake_queries_.SetCurrentCPUTime(123); EXPECT_EQ(123, gpu_timing_client->GetCurrentCPUTime()); - base::Callback<int64_t(void)> empty; + base::RepeatingCallback<int64_t(void)> empty; gpu_timing_client->SetCpuTimeForTesting(empty); EXPECT_NE(123, gpu_timing_client->GetCurrentCPUTime()); }