Index: cc/trees/blocking_task_runner.h |
diff --git a/cc/trees/blocking_task_runner.h b/cc/trees/blocking_task_runner.h |
index 8388a881e607e6bbcf11e4c30b9d659f1dd54909..ec9cabb8511f192b4d3cd04210d750295240050b 100644 |
--- a/cc/trees/blocking_task_runner.h |
+++ b/cc/trees/blocking_task_runner.h |
@@ -25,17 +25,16 @@ namespace cc { |
// to when they were posted. |
// |
// To use this class, post tasks to the task runner returned by |
-// BlockingTaskRunner::current() on the thread you want the tasks to run. |
-// Hold a reference to the BlockingTaskRunner as long as you intend to |
-// post tasks to it. |
+// BlockingTaskRunner::Create() with the SingleThreadTaskRunner for the thread |
danakj
2014/08/28 17:10:46
i think this sentence is awkward. period after Cre
Sami
2014/08/28 18:21:16
Yah, not sure what I was going for there. Rewritte
|
+// you want the tasks to run. |
// |
-// Then, on the thread from which the BlockingTaskRunner was created, you |
-// may instantiate a BlockingTaskRunner::CapturePostTasks. While this object |
+// Then, on the thread that the given task runner belongs to, you may |
+// instantiate a BlockingTaskRunner::CapturePostTasks. While this object |
// exists, the task runner will collect any PostTasks called on it, posting |
// tasks to that thread from anywhere. This CapturePostTasks object provides |
// a window in time where tasks can shortcut past the MessageLoop. As soon |
// as the CapturePostTasks object is destroyed (goes out of scope), all |
-// tasks that had been posted to the thread during the window will be exectuted |
+// tasks that had been posted to the thread during the window will be executed |
// immediately. |
// |
// Beware of re-entrancy, make sure the CapturePostTasks object is destroyed at |
@@ -43,16 +42,20 @@ namespace cc { |
class CC_EXPORT BlockingTaskRunner |
: public base::RefCountedThreadSafe<BlockingTaskRunner> { |
public: |
- // Returns the BlockingTaskRunner for the current thread, creating one if |
- // necessary. |
- static scoped_refptr<BlockingTaskRunner> current(); |
+ // Creates a BlockingTaskRunner for a given SingleThreadTaskRunner. |
+ // |task_runner| will be used to run the tasks which are posted while we are |
+ // not capturing. |task_runner| should belong to same the thread on which |
+ // capturing is done. |
+ static scoped_refptr<BlockingTaskRunner> Create( |
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner); |
danakj
2014/08/28 17:10:46
I'm starting to wonder if this class needs to be r
Sami
2014/08/28 18:21:17
Great idea, the ownership is much simpler now so a
|
// While an object of this type is held alive on a thread, any tasks |
// posted to the thread will be captured and run as soon as the object |
- // is destroyed, shortcutting past the MessageLoop. |
+ // is destroyed, shortcutting past the task runner. |
class CC_EXPORT CapturePostTasks { |
public: |
- CapturePostTasks(); |
+ explicit CapturePostTasks( |
+ scoped_refptr<BlockingTaskRunner> blocking_runner); |
danakj
2014/08/28 17:10:46
make this a raw pointer
Sami
2014/08/28 18:21:16
Done.
|
~CapturePostTasks(); |
private: |
@@ -68,7 +71,7 @@ class CC_EXPORT BlockingTaskRunner |
// Posts a task using the contained SingleThreadTaskRunner unless |capture_| |
// is true. When |capture_| is true, tasks posted will be caught and stored |
// until the capturing stops. At that time the tasks will be run directly |
- // instead of being posted to the SingleThreadTaskRunner. |
+ // instead of being posted to the underlying task runner. |
bool PostTask(const tracked_objects::Location& from_here, |
const base::Closure& task); |
@@ -81,7 +84,6 @@ class CC_EXPORT BlockingTaskRunner |
void SetCapture(bool capture); |
- base::PlatformThreadId thread_id_; |
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
base::Lock lock_; |