summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2010-09-15 10:06:58 +0200
committerAlon Levy <alevy@redhat.com>2010-12-07 13:31:28 +0200
commit7461ee17cf4e59c30d3c7d83c1bb7b029c6cfb9b (patch)
treeb6db42e03a4452daa2f0a5d5e66c221ab87bbb15
parent5220e0a7062a5fa5dadd386b9d3a0794a4844b17 (diff)
downloadspice-7461ee17cf4e59c30d3c7d83c1bb7b029c6cfb9b.tar.gz
spice-7461ee17cf4e59c30d3c7d83c1bb7b029c6cfb9b.tar.xz
spice-7461ee17cf4e59c30d3c7d83c1bb7b029c6cfb9b.zip
server: add spice_server_char_device_remove_interface
-rw-r--r--server/reds.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/server/reds.c b/server/reds.c
index d71ecb15..3edf474f 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3463,6 +3463,19 @@ static int spice_server_char_device_add_interface(SpiceServer *s,
return 0;
}
+static void spice_server_char_device_remove_interface(SpiceBaseInstance *sin)
+{
+ SpiceCharDeviceInstance* char_device =
+ SPICE_CONTAINEROF(sin, SpiceCharDeviceInstance, base);
+
+ red_printf("remove CHAR_DEVICE %s", char_device->subtype);
+ if (strcmp(char_device->subtype, SUBTYPE_VDAGENT) == 0) {
+ if (vdagent) {
+ reds_agent_remove();
+ }
+ }
+}
+
__visible__ int spice_server_add_interface(SpiceServer *s,
SpiceBaseInstance *sin)
{
@@ -3605,11 +3618,7 @@ __visible__ int spice_server_remove_interface(SpiceBaseInstance *sin)
snd_detach_record(SPICE_CONTAINEROF(sin, SpiceRecordInstance, base));
} else if (strcmp(interface->type, SPICE_INTERFACE_CHAR_DEVICE) == 0) {
- red_printf("remove SPICE_INTERFACE_CHAR_DEVICE");
- if (vdagent && sin == &vdagent->base) {
- reds_agent_remove();
- }
-
+ spice_server_char_device_remove_interface(sin);
} else {
red_error("VD_INTERFACE_REMOVING unsupported");
return -1;