This commit is contained in:
Randell Jesup 2016-11-20 02:39:08 -05:00
Родитель 8a8904b1c0
Коммит 2c33546190
2 изменённых файлов: 8 добавлений и 3 удалений

Просмотреть файл

@ -2696,6 +2696,7 @@ MediaManager::OnNavigation(uint64_t aWindowID)
void
MediaManager::RemoveMediaDevicesCallback(uint64_t aWindowID)
{
MutexAutoLock lock(mCallbackMutex);
for (DeviceChangeCallback* observer : mDeviceChangeCallbackList)
{
dom::MediaDevices* mediadevices = static_cast<dom::MediaDevices *>(observer);
@ -2704,7 +2705,7 @@ MediaManager::RemoveMediaDevicesCallback(uint64_t aWindowID)
nsPIDOMWindowInner* window = mediadevices->GetOwner();
MOZ_ASSERT(window);
if (window && window->WindowID() == aWindowID) {
DeviceChangeCallback::RemoveDeviceChangeCallback(observer);
DeviceChangeCallback::RemoveDeviceChangeCallbackLocked(observer);
return;
}
}

Просмотреть файл

@ -32,6 +32,12 @@ public:
virtual int RemoveDeviceChangeCallback(DeviceChangeCallback* aCallback)
{
MutexAutoLock lock(mCallbackMutex);
return RemoveDeviceChangeCallbackLocked(aCallback);
}
virtual int RemoveDeviceChangeCallbackLocked(DeviceChangeCallback* aCallback)
{
mCallbackMutex.AssertCurrentThreadOwns();
if (mDeviceChangeCallbackList.IndexOf(aCallback) != mDeviceChangeCallbackList.NoIndex)
mDeviceChangeCallbackList.RemoveElement(aCallback);
return 0;
@ -39,12 +45,10 @@ public:
DeviceChangeCallback() : mCallbackMutex("mozilla::media::DeviceChangeCallback::mCallbackMutex")
{
mDeviceChangeCallbackList.Clear();
}
virtual ~DeviceChangeCallback()
{
mDeviceChangeCallbackList.Clear();
}
protected: