| Index: services/ui/ws/window_manager_state.h
|
| diff --git a/services/ui/ws/window_manager_state.h b/services/ui/ws/window_manager_state.h
|
| index 818c179238a7471530a3e768eb1d1fa217b4d44c..c936136b57553f1eac29392ea1745ee6478af5ad 100644
|
| --- a/services/ui/ws/window_manager_state.h
|
| +++ b/services/ui/ws/window_manager_state.h
|
| @@ -100,7 +100,7 @@ class WindowManagerState : public EventDispatcherDelegate,
|
| bool IsActive() const;
|
|
|
| void Activate(const gfx::Point& mouse_location_on_display,
|
| - const int64_t display_id);
|
| + int64_t display_id);
|
| void Deactivate();
|
|
|
| // Processes an event from PlatformDisplay.
|
| @@ -157,13 +157,13 @@ class WindowManagerState : public EventDispatcherDelegate,
|
| };
|
|
|
| // Tracks state associated with an event being dispatched to a client.
|
| - struct InFlightEventDetails {
|
| - InFlightEventDetails(WindowManagerState* window_manager_state,
|
| - WindowTree* tree,
|
| - int64_t display_id,
|
| - const Event& event,
|
| - EventDispatchPhase phase);
|
| - ~InFlightEventDetails();
|
| + struct InFlightEventDispatchDetails {
|
| + InFlightEventDispatchDetails(WindowManagerState* window_manager_state,
|
| + WindowTree* tree,
|
| + int64_t display_id,
|
| + const Event& event,
|
| + EventDispatchPhase phase);
|
| + ~InFlightEventDispatchDetails();
|
|
|
| base::OneShotTimer timer;
|
| WindowTree* tree;
|
| @@ -217,15 +217,10 @@ class WindowManagerState : public EventDispatcherDelegate,
|
| std::unique_ptr<ProcessedEventTarget> processed_event_target,
|
| int64_t display_id);
|
|
|
| - // Processes the next valid event in |event_queue_|. If the event has already
|
| - // been processed it is dispatched, otherwise the event is passed to the
|
| - // EventDispatcher for processing.
|
| - void ProcessNextEventFromQueue();
|
| -
|
| // Dispatches the event to the appropriate client and starts the ack timer.
|
| void DispatchInputEventToWindowImpl(ServerWindow* target,
|
| ClientSpecificId client_id,
|
| - const int64_t display_id,
|
| + int64_t display_id,
|
| const Event& event,
|
| base::WeakPtr<Accelerator> accelerator);
|
|
|
| @@ -234,16 +229,15 @@ class WindowManagerState : public EventDispatcherDelegate,
|
|
|
| // Finds the debug accelerator for |event| and if one is found calls
|
| // HandleDebugAccelerator().
|
| - void ProcessDebugAccelerator(const Event& event, const int64_t display_id);
|
| + void ProcessDebugAccelerator(const Event& event, int64_t display_id);
|
|
|
| // Runs the specified debug accelerator.
|
| - void HandleDebugAccelerator(DebugAcceleratorType type,
|
| - const int64_t display_id);
|
| + void HandleDebugAccelerator(DebugAcceleratorType type, int64_t display_id);
|
|
|
| // Called when waiting for an event or accelerator to be processed by |tree|.
|
| void ScheduleInputEventTimeout(WindowTree* tree,
|
| ServerWindow* target,
|
| - const int64_t display_id,
|
| + int64_t display_id,
|
| const Event& event,
|
| EventDispatchPhase phase);
|
|
|
| @@ -251,34 +245,36 @@ class WindowManagerState : public EventDispatcherDelegate,
|
| // the input should be in display-physical-pixel space, and the output is in
|
| // screen-dip space. Returns true if the |point| is successfully converted,
|
| // false otherwise.
|
| - bool ConvertPointToScreen(const int64_t display_id, gfx::Point* point);
|
| + bool ConvertPointToScreen(int64_t display_id, gfx::Point* point);
|
|
|
| // EventDispatcherDelegate:
|
| void OnAccelerator(uint32_t accelerator_id,
|
| - const int64_t display_id,
|
| + int64_t display_id,
|
| const Event& event,
|
| AcceleratorPhase phase) override;
|
| void SetFocusedWindowFromEventDispatcher(ServerWindow* window) override;
|
| - ServerWindow* GetFocusedWindowForEventDispatcher(
|
| - const int64_t display_id) override;
|
| + ServerWindow* GetFocusedWindowForEventDispatcher(int64_t display_id) override;
|
| void SetNativeCapture(ServerWindow* window) override;
|
| void ReleaseNativeCapture() override;
|
| void UpdateNativeCursorFromDispatcher() override;
|
| void OnCaptureChanged(ServerWindow* new_capture,
|
| ServerWindow* old_capture) override;
|
| void OnMouseCursorLocationChanged(const gfx::Point& point,
|
| - const int64_t display_id) override;
|
| + int64_t display_id) override;
|
| void DispatchInputEventToWindow(ServerWindow* target,
|
| ClientSpecificId client_id,
|
| - const int64_t display_id,
|
| + int64_t display_id,
|
| const Event& event,
|
| Accelerator* accelerator) override;
|
| + // Processes the next valid event in |event_queue_|. If the event has already
|
| + // been processed it is dispatched, otherwise the event is passed to the
|
| + // EventDispatcher for processing.
|
| + void ProcessNextAvailableEvent() override;
|
| ClientSpecificId GetEventTargetClientId(const ServerWindow* window,
|
| bool in_nonclient_area) override;
|
| ServerWindow* GetRootWindowContaining(gfx::Point* location_in_display,
|
| int64_t* display_id) override;
|
| - void OnEventTargetNotFound(const Event& event,
|
| - const int64_t display_id) override;
|
| + void OnEventTargetNotFound(const Event& event, int64_t display_id) override;
|
|
|
| // ServerWindowObserver:
|
| void OnWindowEmbeddedAppDisconnected(ServerWindow* window) override;
|
| @@ -291,13 +287,16 @@ class WindowManagerState : public EventDispatcherDelegate,
|
| bool got_frame_decoration_values_ = false;
|
| mojom::FrameDecorationValuesPtr frame_decoration_values_;
|
|
|
| + // Events can go into this queue if there's a hit-test in flight in
|
| + // EventDispatcher or if we are actively dispatching an event.
|
| std::queue<std::unique_ptr<QueuedEvent>> event_queue_;
|
|
|
| std::vector<DebugAccelerator> debug_accelerators_;
|
|
|
| // If non-null we're actively waiting for a response from a client for an
|
| // event.
|
| - std::unique_ptr<InFlightEventDetails> in_flight_event_details_;
|
| + std::unique_ptr<InFlightEventDispatchDetails>
|
| + in_flight_event_dispatch_details_;
|
|
|
| EventDispatcher event_dispatcher_;
|
|
|
|
|