Bug 1258144: Don't start a thread for SystemClockDriver if already started r?padenot
The only way I can conceive that this assertion could fire is if something
called driver->Start() on this driver either before or after we forced it to start for
shutdown. In any case, if we've called Start for the driver already,
calling it again shouldn't do anything.
MozReview-Commit-ID: gee67lJAR
--- a/dom/media/GraphDriver.cpp
+++ b/dom/media/GraphDriver.cpp
@@ -219,21 +219,24 @@ public:
private:
ThreadedDriver* mDriver;
};
void
ThreadedDriver::Start()
{
LIFECYCLE_LOG("Starting thread for a SystemClockDriver %p\n", mGraphImpl);
- nsCOMPtr<nsIRunnable> event = new MediaStreamGraphInitThreadRunnable(this);
- // Note: mThread may be null during event->Run() if we pass to NewNamedThread! See AudioInitTask
- nsresult rv = NS_NewNamedThread("MediaStreamGrph", getter_AddRefs(mThread));
- if (NS_SUCCEEDED(rv)) {
- mThread->Dispatch(event, NS_DISPATCH_NORMAL);
+ NS_WARN_IF(!mThread);
+ if (!mThread) { // Ensure we haven't already started it
+ nsCOMPtr<nsIRunnable> event = new MediaStreamGraphInitThreadRunnable(this);
+ // Note: mThread may be null during event->Run() if we pass to NewNamedThread! See AudioInitTask
+ nsresult rv = NS_NewNamedThread("MediaStreamGrph", getter_AddRefs(mThread));
+ if (NS_SUCCEEDED(rv)) {
+ mThread->Dispatch(event, NS_DISPATCH_NORMAL);
+ }
}
}
void
ThreadedDriver::Resume()
{
Start();
}