Index: chrome/browser/gpu_process_host.cc |
=================================================================== |
--- chrome/browser/gpu_process_host.cc (revision 67133) |
+++ chrome/browser/gpu_process_host.cc (working copy) |
@@ -13,6 +13,7 @@ |
#include "chrome/browser/renderer_host/render_view_host.h" |
#include "chrome/browser/renderer_host/render_widget_host_view.h" |
#include "chrome/browser/renderer_host/resource_message_filter.h" |
+#include "chrome/browser/tab_contents/render_view_host_delegate_helper.h" |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/gpu_info.h" |
#include "chrome/common/gpu_messages.h" |
@@ -48,6 +49,12 @@ |
// initialized, the IO thread. |
static GpuProcessHost* sole_instance_ = NULL; |
+// Number of times the gpu process has crashed in the current browser session. |
+static int g_gpu_crash_count = 0; |
+// Maximaum number of times the gpu process is allowed to crash in a session. |
apatrick_chromium
2010/11/29 20:59:31
typo: Maximum
|
+// Once this limit is reached, any request to launch the gpu process will fail. |
+static const int kGpuMaxCrashCount = 3; |
+ |
void RouteOnUIThread(const IPC::Message& message) { |
BrowserThread::PostTask(BrowserThread::UI, |
FROM_HERE, |
@@ -344,13 +351,15 @@ |
} |
void GpuProcessHost::OnProcessCrashed() { |
- // TODO(alokp): Update gpu process crash rate. |
+ if (++g_gpu_crash_count >= kGpuMaxCrashCount) { |
+ // The gpu process is too unstable to use. Disable it for current session. |
+ RenderViewHostDelegateHelper::set_gpu_enabled(false); |
+ } |
BrowserChildProcessHost::OnProcessCrashed(); |
} |
bool GpuProcessHost::CanLaunchGpuProcess() const { |
- // TODO(alokp): Answer based on crash rate. |
- return true; |
+ return RenderViewHostDelegateHelper::gpu_enabled(); |
} |
bool GpuProcessHost::LaunchGpuProcess() { |
apatrick
2010/11/29 17:45:38
Does making this function return false when g_gpu_
alokp
2010/11/29 18:34:38
yes it works and I do that too via CanLaunchGpuPro
|