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

Side by Side Diff: base/callback_helpers.cc

Issue 2094803005: Fix PrepareTextureCopyOutputResult to avoid ScopedCallbackRunner. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_closure_runner
Patch Set: RunNow Created 4 years, 5 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/callback_helpers.h" 5 #include "base/callback_helpers.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/logging.h"
8 9
9 namespace base { 10 namespace base {
10 11
11 ScopedClosureRunner::ScopedClosureRunner() {} 12 ScopedClosureRunner::ScopedClosureRunner() {}
12 13
13 ScopedClosureRunner::ScopedClosureRunner(const Closure& closure) 14 ScopedClosureRunner::ScopedClosureRunner(const Closure& closure)
14 : closure_(closure) {} 15 : closure_(closure) {}
15 16
16 ScopedClosureRunner::~ScopedClosureRunner() { 17 ScopedClosureRunner::~ScopedClosureRunner() {
17 if (!closure_.is_null()) 18 if (!closure_.is_null())
18 closure_.Run(); 19 closure_.Run();
19 } 20 }
20 21
21 ScopedClosureRunner::ScopedClosureRunner(ScopedClosureRunner&& other) 22 ScopedClosureRunner::ScopedClosureRunner(ScopedClosureRunner&& other)
22 : closure_(other.Release()) {} 23 : closure_(other.Release()) {}
23 24
24 ScopedClosureRunner& ScopedClosureRunner::operator=( 25 ScopedClosureRunner& ScopedClosureRunner::operator=(
25 ScopedClosureRunner&& other) { 26 ScopedClosureRunner&& other) {
26 Reset(other.Release()); 27 DCHECK(closure_.is_null());
28 ReplaceClosure(other.Release());
27 return *this; 29 return *this;
28 } 30 }
29 31
30 void ScopedClosureRunner::Reset() { 32 void ScopedClosureRunner::RunNow() {
31 Closure old_closure = Release(); 33 Closure old_closure = Release();
32 if (!old_closure.is_null()) 34 if (!old_closure.is_null())
33 old_closure.Run(); 35 old_closure.Run();
34 } 36 }
35 37
36 void ScopedClosureRunner::Reset(const Closure& closure) { 38 void ScopedClosureRunner::ReplaceClosure(const Closure& closure) {
37 Closure old_closure = Release(); 39 Closure old_closure = Release();
38 closure_ = closure; 40 closure_ = closure;
39 if (!old_closure.is_null()) 41 if (!old_closure.is_null())
40 old_closure.Run(); 42 old_closure.Run();
41 } 43 }
42 44
43 Closure ScopedClosureRunner::Release() { 45 Closure ScopedClosureRunner::Release() {
44 Closure result = closure_; 46 Closure result = closure_;
45 closure_.Reset(); 47 closure_.Reset();
46 return result; 48 return result;
47 } 49 }
48 50
49 } // namespace base 51 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698