| Index: base/message_loop/message_pump_win.h
|
| diff --git a/base/message_loop/message_pump_win.h b/base/message_loop/message_pump_win.h
|
| index 6f4b699cefdfce5a3fac2249d6ebbcc2bf4c5bed..ac9f68a78f501e897ffc07b973d87efd495dde64 100644
|
| --- a/base/message_loop/message_pump_win.h
|
| +++ b/base/message_loop/message_pump_win.h
|
| @@ -8,6 +8,7 @@
|
| #include <windows.h>
|
|
|
| #include <list>
|
| +#include <memory>
|
|
|
| #include "base/base_export.h"
|
| #include "base/message_loop/message_pump.h"
|
| @@ -22,7 +23,7 @@ namespace base {
|
| // controlling the lifetime of the message pump.
|
| class BASE_EXPORT MessagePumpWin : public MessagePump {
|
| public:
|
| - MessagePumpWin() : have_work_(0), state_(NULL) {}
|
| + MessagePumpWin() : work_state_(READY), state_(NULL) {}
|
|
|
| // MessagePump methods:
|
| void Run(Delegate* delegate) override;
|
| @@ -39,16 +40,23 @@ class BASE_EXPORT MessagePumpWin : public MessagePump {
|
| int run_depth;
|
| };
|
|
|
| + // State used with |work_state_| variable.
|
| + enum WorkState {
|
| + READY = 0, // Ready to accept new work.
|
| + HAVE_WORK = 1, // New work has been signalled.
|
| + WORKING = 2 // Handling the work.
|
| + };
|
| +
|
| virtual void DoRunLoop() = 0;
|
| int GetCurrentDelay() const;
|
|
|
| // The time at which delayed work should run.
|
| TimeTicks delayed_work_time_;
|
|
|
| - // A boolean value used to indicate if there is a kMsgDoWork message pending
|
| + // A value used to indicate if there is a kMsgDoWork message pending
|
| // in the Windows Message queue. There is at most one such message, and it
|
| // can drive execution of tasks when a native message pump is running.
|
| - LONG have_work_;
|
| + LONG work_state_;
|
|
|
| // State for the current invocation of Run.
|
| RunState* state_;
|
| @@ -104,9 +112,6 @@ class BASE_EXPORT MessagePumpWin : public MessagePump {
|
| //
|
| class BASE_EXPORT MessagePumpForUI : public MessagePumpWin {
|
| public:
|
| - // The application-defined code passed to the hook procedure.
|
| - static const int kMessageFilterCode = 0x5001;
|
| -
|
| MessagePumpForUI();
|
| ~MessagePumpForUI() override;
|
|
|
| @@ -137,6 +142,35 @@ class BASE_EXPORT MessagePumpForUI : public MessagePumpWin {
|
| };
|
|
|
| //-----------------------------------------------------------------------------
|
| +// MessagePumpForGpu is a simplified version of UI message pump that is
|
| +// optimized for the GPU process. Unlike MessagePumpForUI it doesn't have a
|
| +// hidden window and doesn't handle a situation where a native message pump
|
| +// might take over message processing.
|
| +//
|
| +class BASE_EXPORT MessagePumpForGpu : public MessagePumpWin {
|
| + public:
|
| + MessagePumpForGpu();
|
| + ~MessagePumpForGpu() override;
|
| +
|
| + // Factory methods.
|
| + static void InitFactory();
|
| + static std::unique_ptr<MessagePump> CreateMessagePumpForGpu();
|
| +
|
| + // MessagePump methods:
|
| + void ScheduleWork() override;
|
| + void ScheduleDelayedWork(const TimeTicks& delayed_work_time) override;
|
| +
|
| + private:
|
| + // MessagePumpWin methods:
|
| + void DoRunLoop() override;
|
| +
|
| + void WaitForWork();
|
| + bool ProcessMessages();
|
| +
|
| + const DWORD thread_id_;
|
| +};
|
| +
|
| +//-----------------------------------------------------------------------------
|
| // MessagePumpForIO extends MessagePumpWin with methods that are particular to a
|
| // MessageLoop instantiated with TYPE_IO. This version of MessagePump does not
|
| // deal with Windows mesagges, and instead has a Run loop based on Completion
|
|
|