OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chromecast/media/cma/base/balanced_media_task_runner_factory.h" | 5 #include "chromecast/media/cma/base/balanced_media_task_runner_factory.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 // |new_task_cb| is invoked in that case. | 25 // |new_task_cb| is invoked in that case. |
26 // - monitor the lifetime of the media task runner, i.e. check when the media | 26 // - monitor the lifetime of the media task runner, i.e. check when the media |
27 // task runner is not needed anymore. | 27 // task runner is not needed anymore. |
28 // |shutdown_cb| is invoked in that case. | 28 // |shutdown_cb| is invoked in that case. |
29 MediaTaskRunnerWithNotification( | 29 MediaTaskRunnerWithNotification( |
30 const scoped_refptr<MediaTaskRunner>& media_task_runner, | 30 const scoped_refptr<MediaTaskRunner>& media_task_runner, |
31 const base::Closure& new_task_cb, | 31 const base::Closure& new_task_cb, |
32 const base::Closure& shutdown_cb); | 32 const base::Closure& shutdown_cb); |
33 | 33 |
34 // MediaTaskRunner implementation. | 34 // MediaTaskRunner implementation. |
35 virtual bool PostMediaTask( | 35 bool PostMediaTask( |
36 const tracked_objects::Location& from_here, | 36 const tracked_objects::Location& from_here, |
37 const base::Closure& task, | 37 const base::Closure& task, |
38 base::TimeDelta timestamp) override; | 38 base::TimeDelta timestamp) override; |
39 | 39 |
40 private: | 40 private: |
41 virtual ~MediaTaskRunnerWithNotification(); | 41 ~MediaTaskRunnerWithNotification() override; |
42 | 42 |
43 scoped_refptr<MediaTaskRunner> const media_task_runner_; | 43 scoped_refptr<MediaTaskRunner> const media_task_runner_; |
44 | 44 |
45 const base::Closure new_task_cb_; | 45 const base::Closure new_task_cb_; |
46 const base::Closure shutdown_cb_; | 46 const base::Closure shutdown_cb_; |
47 | 47 |
48 DISALLOW_COPY_AND_ASSIGN(MediaTaskRunnerWithNotification); | 48 DISALLOW_COPY_AND_ASSIGN(MediaTaskRunnerWithNotification); |
49 }; | 49 }; |
50 | 50 |
51 MediaTaskRunnerWithNotification::MediaTaskRunnerWithNotification( | 51 MediaTaskRunnerWithNotification::MediaTaskRunnerWithNotification( |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); | 86 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); |
87 | 87 |
88 // Schedule tasks whose timestamp is less than or equal to |max_timestamp|. | 88 // Schedule tasks whose timestamp is less than or equal to |max_timestamp|. |
89 void ScheduleWork(base::TimeDelta max_timestamp); | 89 void ScheduleWork(base::TimeDelta max_timestamp); |
90 | 90 |
91 // Return the timestamp of the last media task. | 91 // Return the timestamp of the last media task. |
92 // Return ::media::kNoTimestamp() if no media task has been posted. | 92 // Return ::media::kNoTimestamp() if no media task has been posted. |
93 base::TimeDelta GetMediaTimestamp() const; | 93 base::TimeDelta GetMediaTimestamp() const; |
94 | 94 |
95 // MediaTaskRunner implementation. | 95 // MediaTaskRunner implementation. |
96 virtual bool PostMediaTask( | 96 bool PostMediaTask( |
97 const tracked_objects::Location& from_here, | 97 const tracked_objects::Location& from_here, |
98 const base::Closure& task, | 98 const base::Closure& task, |
99 base::TimeDelta timestamp) override; | 99 base::TimeDelta timestamp) override; |
100 | 100 |
101 private: | 101 private: |
102 virtual ~BalancedMediaTaskRunner(); | 102 ~BalancedMediaTaskRunner() override; |
103 | 103 |
104 scoped_refptr<base::SingleThreadTaskRunner> const task_runner_; | 104 scoped_refptr<base::SingleThreadTaskRunner> const task_runner_; |
105 | 105 |
106 // Protects the following variables. | 106 // Protects the following variables. |
107 mutable base::Lock lock_; | 107 mutable base::Lock lock_; |
108 | 108 |
109 // Possible pending media task. | 109 // Possible pending media task. |
110 tracked_objects::Location from_here_; | 110 tracked_objects::Location from_here_; |
111 base::Closure pending_task_; | 111 base::Closure pending_task_; |
112 | 112 |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 } | 243 } |
244 | 244 |
245 void BalancedMediaTaskRunnerFactory::UnregisterMediaTaskRunner( | 245 void BalancedMediaTaskRunnerFactory::UnregisterMediaTaskRunner( |
246 const scoped_refptr<BalancedMediaTaskRunner>& media_task_runner) { | 246 const scoped_refptr<BalancedMediaTaskRunner>& media_task_runner) { |
247 base::AutoLock auto_lock(lock_); | 247 base::AutoLock auto_lock(lock_); |
248 task_runners_.erase(media_task_runner); | 248 task_runners_.erase(media_task_runner); |
249 } | 249 } |
250 | 250 |
251 } // namespace media | 251 } // namespace media |
252 } // namespace chromecast | 252 } // namespace chromecast |
OLD | NEW |