mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-04 23:08:39 +09:00
Bug 1458270: Clean up in the shutdown observer. r=milan a=jcristau
--HG-- extra : amend_source : 7b1277a18a3ed4f441deef8b51cb4ec4dde614cc
This commit is contained in:
parent
7e4ac9f3a2
commit
2c709a3e82
7 changed files with 39 additions and 4 deletions
|
|
@ -43,6 +43,7 @@ using mozilla::MutexAutoLock;
|
|||
|
||||
nsTArray<GfxDriverInfo>* GfxInfoBase::mDriverInfo;
|
||||
bool GfxInfoBase::mDriverInfoObserverInitialized;
|
||||
bool GfxInfoBase::mShutdownOccurred;
|
||||
|
||||
// Observes for shutdown so that the child GfxDriverInfo list is freed.
|
||||
class ShutdownObserver : public nsIObserver
|
||||
|
|
@ -62,11 +63,17 @@ public:
|
|||
delete GfxInfoBase::mDriverInfo;
|
||||
GfxInfoBase::mDriverInfo = nullptr;
|
||||
|
||||
for (uint32_t i = 0; i < DeviceFamilyMax; i++)
|
||||
for (uint32_t i = 0; i < DeviceFamilyMax; i++) {
|
||||
delete GfxDriverInfo::mDeviceFamilies[i];
|
||||
GfxDriverInfo::mDeviceFamilies[i] = nullptr;
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < DeviceVendorMax; i++)
|
||||
for (uint32_t i = 0; i < DeviceVendorMax; i++) {
|
||||
delete GfxDriverInfo::mDeviceVendors[i];
|
||||
GfxDriverInfo::mDeviceVendors[i] = nullptr;
|
||||
}
|
||||
|
||||
GfxInfoBase::mShutdownOccurred = true;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
@ -855,6 +862,13 @@ GfxInfoBase::GetFeatureStatusImpl(int32_t aFeature,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
if (mShutdownOccurred) {
|
||||
// This is futile; we've already commenced shutdown and our blocklists have
|
||||
// been deleted. We may want to look into resurrecting the blocklist instead
|
||||
// but for now, just don't even go there.
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// If an operating system was provided by the derived GetFeatureStatusImpl,
|
||||
// grab it here. Otherwise, the OS is unknown.
|
||||
OperatingSystem os = (aOS ? *aOS : OperatingSystem::Unknown);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue