Disabled "Terminate" button in about:support if no GPU process is running. (bug 1331818, r=gwright)
☠☠ backed out by a5fc021fd3f5 ☠ ☠
authorDavid Anderson <danderson@mozilla.com>
Sun, 05 Feb 2017 21:56:00 -0800
changeset 340866 74d2f566ed65b8ba65db684a24279bb9ad984f8b
parent 340865 65c5923d0feccdbe87b3dfc50a389e715d775a70
child 340867 8ea557ab6b8d35a9c81902405619f7d5f6bea082
push id86573
push userdanderson@mozilla.com
push dateMon, 06 Feb 2017 06:01:17 +0000
treeherdermozilla-inbound@74d2f566ed65 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersgwright
bugs1331818
milestone54.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Disabled "Terminate" button in about:support if no GPU process is running. (bug 1331818, r=gwright)
gfx/ipc/GPUProcessManager.cpp
toolkit/content/aboutSupport.js
--- a/gfx/ipc/GPUProcessManager.cpp
+++ b/gfx/ipc/GPUProcessManager.cpp
@@ -151,16 +151,20 @@ GPUProcessManager::DisableGPUProcess(con
     return;
   }
 
   gfxConfig::SetFailed(Feature::GPU_PROCESS, FeatureStatus::Failed, aMessage);
   gfxCriticalNote << aMessage;
 
   DestroyProcess();
   ShutdownVsyncIOThread();
+
+  if (nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService()) {
+    obs->NotifyObservers(nullptr, "gpu-process:disabled", nullptr);
+  }
 }
 
 void
 GPUProcessManager::EnsureGPUReady()
 {
   if (mProcess && !mProcess->IsConnected()) {
     if (!mProcess->WaitForLaunch()) {
       // If this fails, we should have fired OnProcessLaunchComplete and
--- a/toolkit/content/aboutSupport.js
+++ b/toolkit/content/aboutSupport.js
@@ -292,16 +292,22 @@ var snapshotFormatters = {
 
       if (gpuProcessPid != -1) {
         let gpuProcessKillButton = $.new("button");
 
         gpuProcessKillButton.addEventListener("click", function() {
           windowUtils.terminateGPUProcess();
         });
 
+        let listener = function(subject, topic) {
+          gpuProcessKillButton.disabled = true;
+          Services.obs.removeObserver(listener, "gpu-process:disabled");
+        };
+        Services.obs.addObserver(listener, "gpu-process:disabled", false);
+
         gpuProcessKillButton.textContent = strings.GetStringFromName("gpuProcessKillButton");
         addRow("diagnostics", "GPUProcessPid", gpuProcessPid);
         addRow("diagnostics", "GPUProcess", [gpuProcessKillButton]);
       }
     }
 
     // graphics-failures-tbody tbody
     if ("failures" in data) {