Index: media/filters/renderer_impl.cc |
diff --git a/media/filters/renderer_impl.cc b/media/filters/renderer_impl.cc |
index e15ad6e061b31dde4fe2974819c3916ae5ec535f..1f1228717b09850819d59861e5e0e09cc3b227ce 100644 |
--- a/media/filters/renderer_impl.cc |
+++ b/media/filters/renderer_impl.cc |
@@ -11,6 +11,7 @@ |
#include "base/location.h" |
#include "base/single_thread_task_runner.h" |
#include "media/base/audio_renderer.h" |
+#include "media/base/bind_to_current_loop.h" |
#include "media/base/demuxer_stream_provider.h" |
#include "media/base/time_source.h" |
#include "media/base/video_renderer.h" |
@@ -78,7 +79,9 @@ void RendererImpl::Initialize(DemuxerStreamProvider* demuxer_stream_provider, |
ended_cb_ = ended_cb; |
error_cb_ = error_cb; |
- init_cb_ = init_cb; |
+ // Always post the callback because |this| could be destroyed upon failure. |
+ init_cb_ = BindToCurrentLoop(init_cb); |
xhwang
2015/01/16 23:09:07
This is the tricky part of our rule that callee mu
DaleCurtis
2015/01/16 23:15:15
I realize we post below and init cb still runs asy
xhwang
2015/01/16 23:24:04
I am not too worried about long stack as long as w
DaleCurtis
2015/01/16 23:33:49
I think just adding a note to the demuxer and rend
DaleCurtis
2015/01/20 21:37:43
Done.
|
+ |
state_ = STATE_INITIALIZING; |
InitializeAudioRenderer(); |
} |