Relax the driver crash guard on nightly and e10s builds. (bug 1200825, r=jgilbert)

This commit is contained in:
David Anderson 2015-09-03 21:05:41 -07:00
parent 50ca54ceaf
commit dc82e993d2
2 changed files with 26 additions and 0 deletions

View File

@ -55,6 +55,13 @@ DriverCrashGuard::InitializeIfNeeded()
void
DriverCrashGuard::Initialize()
{
#ifdef NIGHTLY_BUILD
// We only use the crash guard on non-nightly channels, since the nightly
// channel is for development and having graphics features perma-disabled
// is rather annoying.
return;
#endif
// Using DriverCrashGuard off the main thread currently does not work. Under
// e10s it could conceivably work by dispatching the IPC calls via the main
// thread. In the parent process this would be harder. For now, we simply
@ -63,6 +70,12 @@ DriverCrashGuard::Initialize()
return;
}
// Check to see if all guards have been disabled through the environment.
static bool sAllGuardsDisabled = !!PR_GetEnv("MOZ_DISABLE_CRASH_GUARD");
if (sAllGuardsDisabled) {
return;
}
mGfxInfo = services::GetGfxInfo();
if (XRE_IsContentProcess()) {
@ -469,6 +482,18 @@ GLContextCrashGuard::GLContextCrashGuard(dom::ContentParent* aContentParent)
{
}
void
GLContextCrashGuard::Initialize()
{
if (XRE_IsContentProcess()) {
// Disable the GL crash guard in content processes, since we're not going
// to lose the entire browser and we don't want to hinder WebGL availability.
return;
}
DriverCrashGuard::Initialize();
}
bool
GLContextCrashGuard::UpdateEnvironment()
{

View File

@ -147,6 +147,7 @@ class GLContextCrashGuard final : public DriverCrashGuard
{
public:
explicit GLContextCrashGuard(dom::ContentParent* aContentParent = nullptr);
void Initialize() override;
protected:
bool UpdateEnvironment() override;