From f91d202eb3bf631cf5e70277d1aabffec7da9393 Mon Sep 17 00:00:00 2001 From: Yonit Halperin Date: Sun, 18 Sep 2011 22:50:50 +0300 Subject: [PATCH] client: main channel migration: do partial cleanup when switching hosts Implement on_disconnect_mig_src and on_connect_mig_target in order to avoid unnecessary cleanups done in on_(disconnet|connect). In addition, do not request guest display settings changes after migration. --- client/red_client.cpp | 9 +++++++++ client/red_client.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/client/red_client.cpp b/client/red_client.cpp index f2412de2..3dde7b28 100644 --- a/client/red_client.cpp +++ b/client/red_client.cpp @@ -493,6 +493,15 @@ void RedClient::on_disconnect() (*sync_event)->wait(); } +void RedClient::on_disconnect_mig_src() +{ + _application.deactivate_interval_timer(*_agent_timer); + delete[] _agent_msg_data; + _agent_msg_data = NULL; + _agent_msg_pos = 0; + _agent_tokens = 0; +} + void RedClient::delete_channels() { Lock lock(_channels_lock); diff --git a/client/red_client.h b/client/red_client.h index 1d814683..f47f1cbd 100644 --- a/client/red_client.h +++ b/client/red_client.h @@ -279,6 +279,8 @@ protected: virtual void on_connecting(); virtual void on_connect(); virtual void on_disconnect(); + virtual void on_connect_mig_target() {} + virtual void on_disconnect_mig_src(); private: void on_channel_disconnected(RedChannel& channel);