Index: media/base/filters.h |
diff --git a/media/base/filters.h b/media/base/filters.h |
index c4da5d9143f72477fc4b760903b573db8d41379f..141a75346a694eeb7a7cc232a84104e8a51c2800 100644 |
--- a/media/base/filters.h |
+++ b/media/base/filters.h |
@@ -108,9 +108,22 @@ class MediaFilter : public base::RefCountedThreadSafe<MediaFilter> { |
} |
} |
+ // TODO(boliu): Remove once Stop() is asynchronous in subclasses. |
+ virtual void Stop() {} |
+ |
// The pipeline is being stopped either as a result of an error or because |
// the client called Stop(). |
- virtual void Stop() = 0; |
+ // TODO(boliu): No implementation in subclasses yet. |
+ virtual void Stop(FilterCallback* callback) { |
+ // TODO(boliu): Call the synchronous version for now. Remove once |
+ // all filters have asynchronous stop. |
+ Stop(); |
+ |
+ if (callback) { |
+ callback->Run(); |
+ delete callback; |
+ } |
+ } |
// The pipeline playback rate has been changed. Filters may implement this |
// method if they need to respond to this call. |