| Index: media/midi/midi_scheduler.cc
|
| diff --git a/media/midi/midi_scheduler.cc b/media/midi/midi_scheduler.cc
|
| index cc9373327fe23e41cea9e808e3c4234a180349e6..a65e703673b839c025e1d3384795000132cadb6d 100644
|
| --- a/media/midi/midi_scheduler.cc
|
| +++ b/media/midi/midi_scheduler.cc
|
| @@ -11,7 +11,9 @@
|
|
|
| namespace media {
|
|
|
| -MidiScheduler::MidiScheduler() : weak_factory_(this) {
|
| +MidiScheduler::MidiScheduler(MidiManager* manager)
|
| + : manager_(manager),
|
| + weak_factory_(this) {
|
| }
|
|
|
| MidiScheduler::~MidiScheduler() {
|
| @@ -26,7 +28,11 @@ void MidiScheduler::PostSendDataTask(MidiManagerClient* client,
|
| DCHECK(client);
|
|
|
| const base::Closure& weak_closure = base::Bind(
|
| - &MidiScheduler::InvokeClosure, weak_factory_.GetWeakPtr(), closure);
|
| + &MidiScheduler::InvokeClosure,
|
| + weak_factory_.GetWeakPtr(),
|
| + client,
|
| + length,
|
| + closure);
|
|
|
| base::TimeDelta delay;
|
| if (timestamp != 0.0) {
|
| @@ -37,15 +43,13 @@ void MidiScheduler::PostSendDataTask(MidiManagerClient* client,
|
| }
|
| base::MessageLoop::current()->task_runner()->PostDelayedTask(
|
| FROM_HERE, weak_closure, delay);
|
| -
|
| - // TODO(crbug.com/467442): AccumulateMidiBytesSent should be called in
|
| - // InvokeClosure. But for now, we call it here since |client| may be deleted
|
| - // at that time.
|
| - client->AccumulateMidiBytesSent(length);
|
| }
|
|
|
| -void MidiScheduler::InvokeClosure(const base::Closure& closure) {
|
| +void MidiScheduler::InvokeClosure(MidiManagerClient* client,
|
| + size_t length,
|
| + const base::Closure& closure) {
|
| closure.Run();
|
| + manager_->AccumulateMidiBytesSent(client, length);
|
| }
|
|
|
| } // namespace media
|
|
|