Index: content/renderer/media/scoped_loop_observer.cc |
=================================================================== |
--- content/renderer/media/scoped_loop_observer.cc (revision 148738) |
+++ content/renderer/media/scoped_loop_observer.cc (working copy) |
@@ -1,43 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "content/renderer/media/scoped_loop_observer.h" |
- |
-#include "base/bind.h" |
-#include "base/synchronization/waitable_event.h" |
- |
-ScopedLoopObserver::ScopedLoopObserver( |
- const scoped_refptr<base::MessageLoopProxy>& loop) |
- : loop_(loop) { |
- ObserveLoopDestruction(true, NULL); |
-} |
- |
-ScopedLoopObserver::~ScopedLoopObserver() { |
- ObserveLoopDestruction(false, NULL); |
-} |
- |
-void ScopedLoopObserver::ObserveLoopDestruction(bool enable, |
- base::WaitableEvent* done) { |
- // Note: |done| may be NULL. |
- if (loop_->BelongsToCurrentThread()) { |
- MessageLoop* loop = MessageLoop::current(); |
- if (enable) { |
- loop->AddDestructionObserver(this); |
- } else { |
- loop->RemoveDestructionObserver(this); |
- } |
- } else { |
- base::WaitableEvent event(false, false); |
- if (loop_->PostTask(FROM_HERE, |
- base::Bind(&ScopedLoopObserver::ObserveLoopDestruction, |
- base::Unretained(this), enable, &event))) { |
- event.Wait(); |
- } else { |
- // The message loop's thread has already terminated, so no need to wait. |
- } |
- } |
- |
- if (done) |
- done->Signal(); |
-} |