| Index: chrome/gpu/gpu_watchdog_thread.h
|
| ===================================================================
|
| --- chrome/gpu/gpu_watchdog_thread.h (revision 67048)
|
| +++ chrome/gpu/gpu_watchdog_thread.h (working copy)
|
| @@ -5,6 +5,7 @@
|
| #ifndef CHROME_GPU_GPU_WATCHDOG_THREAD_H_
|
| #define CHROME_GPU_GPU_WATCHDOG_THREAD_H_
|
|
|
| +#include "base/message_loop.h"
|
| #include "base/ref_counted.h"
|
| #include "base/scoped_ptr.h"
|
| #include "base/task.h"
|
| @@ -18,19 +19,41 @@
|
| GpuWatchdogThread(MessageLoop* watched_message_loop, int timeout);
|
| virtual ~GpuWatchdogThread();
|
|
|
| + // Accessible on watched thread but only modified by watchdog thread.
|
| + bool armed() const { return armed_; }
|
| + void PostAcknowledge();
|
| +
|
| protected:
|
| virtual void Init();
|
| virtual void CleanUp();
|
|
|
| private:
|
| +
|
| + // 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 MessageLoop::TaskObserver {
|
| + public:
|
| + explicit GpuWatchdogTaskObserver(GpuWatchdogThread* watchdog);
|
| + virtual ~GpuWatchdogTaskObserver();
|
| +
|
| + // Implements MessageLoop::TaskObserver.
|
| + virtual void WillProcessTask(const Task* task);
|
| + virtual void DidProcessTask(const Task* task);
|
| +
|
| + private:
|
| + void CheckArmed();
|
| + GpuWatchdogThread* watchdog_;
|
| + };
|
| +
|
| void OnAcknowledge();
|
| void OnCheck();
|
| - void PostAcknowledge();
|
| void OnExit();
|
| void Disable();
|
|
|
| MessageLoop* watched_message_loop_;
|
| int timeout_;
|
| + volatile bool armed_;
|
| + GpuWatchdogTaskObserver task_observer_;
|
|
|
| typedef ScopedRunnableMethodFactory<GpuWatchdogThread> MethodFactory;
|
| scoped_ptr<MethodFactory> method_factory_;
|
|
|