Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Unified Diff: content/gpu/gpu_watchdog_thread.h

Issue 2286063003: gpu: Move GpuWatchdogThread into //gpu/ipc/service from content. (Closed)
Patch Set: . Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/gpu/gpu_watchdog_thread.h
diff --git a/content/gpu/gpu_watchdog_thread.h b/content/gpu/gpu_watchdog_thread.h
deleted file mode 100644
index 68d3cd8cb8d7c9b6574e69fa21f21d418b311b5a..0000000000000000000000000000000000000000
--- a/content/gpu/gpu_watchdog_thread.h
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_GPU_GPU_WATCHDOG_THREAD_H_
-#define CONTENT_GPU_GPU_WATCHDOG_THREAD_H_
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "base/message_loop/message_loop.h"
-#include "base/power_monitor/power_observer.h"
-#include "base/threading/thread.h"
-#include "base/time/time.h"
-#include "build/build_config.h"
-#include "gpu/ipc/service/gpu_watchdog.h"
-#include "ui/gfx/native_widget_types.h"
-
-#if defined(USE_X11)
-extern "C" {
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-}
-#include <sys/poll.h>
-#include "ui/base/x/x11_util.h" // nogncheck
-#include "ui/gfx/x/x11_types.h" // nogncheck
-#endif
-
-namespace content {
-
-// A thread that intermitently sends tasks to a group of watched message loops
-// and deliberately crashes if one of them does not respond after a timeout.
-class GpuWatchdogThread : public base::Thread,
- public gpu::GpuWatchdog,
- public base::PowerObserver,
- public base::RefCountedThreadSafe<GpuWatchdogThread> {
- public:
- explicit GpuWatchdogThread(int timeout);
-
- // Accessible on watched thread but only modified by watchdog thread.
- bool armed() const { return armed_; }
- void PostAcknowledge();
-
- // Implement gpu::GpuWatchdog.
- void CheckArmed() override;
-
- // Must be called after a PowerMonitor has been created. Can be called from
- // any thread.
- void AddPowerObserver();
-
- protected:
- void Init() override;
- void CleanUp() override;
-
- private:
- friend class base::RefCountedThreadSafe<GpuWatchdogThread>;
-
- // An object of this type intercepts the reception and completion of all tasks
- // on the watched thread and checks whether the watchdog is armed.
- class GpuWatchdogTaskObserver : public base::MessageLoop::TaskObserver {
- public:
- explicit GpuWatchdogTaskObserver(GpuWatchdogThread* watchdog);
- ~GpuWatchdogTaskObserver() override;
-
- // Implements MessageLoop::TaskObserver.
- void WillProcessTask(const base::PendingTask& pending_task) override;
- void DidProcessTask(const base::PendingTask& pending_task) override;
-
- private:
- GpuWatchdogThread* watchdog_;
- };
-
- ~GpuWatchdogThread() override;
-
- void OnAcknowledge();
- void OnCheck(bool after_suspend);
- void DeliberatelyTerminateToRecoverFromHang();
-#if defined(USE_X11)
- void SetupXServer();
- void SetupXChangeProp();
- bool MatchXEventAtom(XEvent* event);
-#endif
-
- void OnAddPowerObserver();
-
- // Implement PowerObserver.
- void OnSuspend() override;
- void OnResume() override;
-
-#if defined(OS_WIN)
- base::ThreadTicks GetWatchedThreadTime();
-#endif
-
-#if defined(USE_X11)
- int GetActiveTTY() const;
-#endif
-
- base::MessageLoop* watched_message_loop_;
- base::TimeDelta timeout_;
- volatile bool armed_;
- GpuWatchdogTaskObserver task_observer_;
-
- // True if the watchdog should wait for a certain amount of CPU to be used
- // before killing the process.
- bool use_thread_cpu_time_;
-
- // The number of consecutive acknowledgements that had a latency less than
- // 50ms.
- int responsive_acknowledge_count_;
-
-#if defined(OS_WIN)
- void* watched_thread_handle_;
- base::ThreadTicks arm_cpu_time_;
-
- // This measures the time that the system has been running, in units of 100
- // ns.
- ULONGLONG arm_interrupt_time_;
-#endif
-
- // Time after which it's assumed that the computer has been suspended since
- // the task was posted.
- base::Time suspension_timeout_;
-
- bool suspended_;
-
- // The time the last OnSuspend and OnResume was called.
- base::Time suspend_time_;
- base::Time resume_time_;
-
- // This is the time the last check was sent.
- base::Time check_time_;
- base::TimeTicks check_timeticks_;
-
-#if defined(USE_X11)
- XDisplay* display_;
- gfx::AcceleratedWidget window_;
- XAtom atom_;
- FILE* tty_file_;
- int host_tty_;
-#endif
-
- base::WeakPtrFactory<GpuWatchdogThread> weak_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(GpuWatchdogThread);
-};
-
-} // namespace content
-
-#endif // CONTENT_GPU_GPU_WATCHDOG_THREAD_H_

Powered by Google App Engine
This is Rietveld 408576698