[RFC PATCH spice-server v5 07/22] stream-device: Create channel for stream device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



So can be used by the device to communicate with the clients.

Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx>
---
 server/stream-device.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/server/stream-device.c b/server/stream-device.c
index 58edb3d1..0c9173ae 100644
--- a/server/stream-device.c
+++ b/server/stream-device.c
@@ -22,6 +22,8 @@
 #include <spice/stream-device.h>
 
 #include "char-device.h"
+#include "stream-channel.h"
+#include "reds.h"
 
 #define TYPE_STREAM_DEVICE stream_device_get_type()
 
@@ -37,9 +39,11 @@ typedef struct StreamDeviceClass StreamDeviceClass;
 
 struct StreamDevice {
     RedCharDevice parent;
+
     StreamDevHeader hdr;
     uint8_t hdr_pos;
     bool has_error;
+    StreamChannel *stream_channel;
 };
 
 struct StreamDeviceClass {
@@ -204,7 +208,10 @@ stream_device_connect(RedsState *reds, SpiceCharDeviceInstance *sin)
 {
     SpiceCharDeviceInterface *sif;
 
+    StreamChannel *stream_channel = stream_channel_new(reds, 1); // TODO id
+
     StreamDevice *dev = stream_device_new(sin, reds);
+    dev->stream_channel = stream_channel;
 
     sif = spice_char_device_get_interface(sin);
     if (sif->state) {
@@ -217,6 +224,13 @@ stream_device_connect(RedsState *reds, SpiceCharDeviceInstance *sin)
 static void
 stream_device_dispose(GObject *object)
 {
+    StreamDevice *dev = STREAM_DEVICE(object);
+
+    if (dev->stream_channel) {
+        // close all current connections and drop the reference
+        red_channel_destroy(RED_CHANNEL(dev->stream_channel));
+        dev->stream_channel = NULL;
+    }
 }
 
 static void
-- 
2.13.5

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]