diff --git a/Libraries/LibIPC/ClientConnection.h b/Libraries/LibIPC/ClientConnection.h index 429958e644..516fb7c0e0 100644 --- a/Libraries/LibIPC/ClientConnection.h +++ b/Libraries/LibIPC/ClientConnection.h @@ -101,6 +101,7 @@ public: } virtual void may_have_become_unresponsive() {} + virtual void did_become_responsive() {} void post_message(const Message& message) { @@ -130,6 +131,8 @@ public: } ASSERT(static_cast(nwritten) == buffer.size()); + + m_responsiveness_timer->start(); } void drain_messages_from_client() @@ -156,8 +159,10 @@ public: bytes.append(buffer, nread); } - if (!bytes.is_empty()) - m_responsiveness_timer->restart(); + if (!bytes.is_empty()) { + m_responsiveness_timer->stop(); + did_become_responsive(); + } size_t decoded_bytes = 0; for (size_t index = 0; index < bytes.size(); index += decoded_bytes) { diff --git a/Services/WindowServer/ClientConnection.cpp b/Services/WindowServer/ClientConnection.cpp index dff7ae8d51..56353cda36 100644 --- a/Services/WindowServer/ClientConnection.cpp +++ b/Services/WindowServer/ClientConnection.cpp @@ -844,4 +844,9 @@ void ClientConnection::may_have_become_unresponsive() }); } +void ClientConnection::did_become_responsive() +{ + set_unresponsive(false); +} + } diff --git a/Services/WindowServer/ClientConnection.h b/Services/WindowServer/ClientConnection.h index b662d31110..ea4d822d55 100644 --- a/Services/WindowServer/ClientConnection.h +++ b/Services/WindowServer/ClientConnection.h @@ -89,6 +89,7 @@ private: // ^ClientConnection virtual void die() override; virtual void may_have_become_unresponsive() override; + virtual void did_become_responsive() override; void set_unresponsive(bool); void destroy_window(Window&, Vector& destroyed_window_ids);