summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorYonit Halperin <yhalperi@redhat.com>2011-09-18 22:50:50 +0300
committerYonit Halperin <yhalperi@redhat.com>2011-11-02 11:30:26 +0200
commit0a5e9cbbcf9a3ebc6c7e3ccd3e7026998d2488d9 (patch)
tree149c6e1d52a953e512ab15cfb99e8f26f81dd70f /client
parentc73d5c10e677b8ab67101545bb17eb46afd1e251 (diff)
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. (cherry picked from commit f91d202eb3bf631cf5e70277d1aabffec7da9393 branch 0.8)
Diffstat (limited to 'client')
-rw-r--r--client/red_client.cpp9
-rw-r--r--client/red_client.h2
2 files changed, 11 insertions, 0 deletions
diff --git a/client/red_client.cpp b/client/red_client.cpp
index 84440c10..4fc442fb 100644
--- a/client/red_client.cpp
+++ b/client/red_client.cpp
@@ -498,6 +498,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 7b3e5076..20d5ffb7 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);