> > > > > On Wed, 2017-06-14 at 16:39 +0100, Frediano Ziglio wrote: > > > So can be used by the device to communicate with the clients. > > > > > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > > > --- > > > server/stream-device.c | 20 ++++++++++++++++++++ > > > 1 file changed, 20 insertions(+) > > > > > > diff --git a/server/stream-device.c b/server/stream-device.c > > > index 47eb3ac..6c4eccb 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 *channel; > > > }; > > > > > > struct StreamDeviceClass { > > > @@ -189,7 +193,10 @@ stream_device_connect(RedsState *reds, > > > SpiceCharDeviceInstance *sin) > > > { > > > SpiceCharDeviceInterface *sif; > > > > > > + StreamChannel *channel = stream_channel_new(reds); > > > + > > > StreamDevice *dev = stream_device_new(sin, reds); > > > + dev->channel = channel; > > > > Perhaps pass channel as an argument to stream_device_new() similar to > > how we do with red_char_device_spicevmc_new()? > > > > If you mean the assign inside stream_device_new is fine for me. > If you mean write some property code I don't like it. > Something like this: diff --git a/server/stream-device.c b/server/stream-device.c index 026f79c7..3a41bbce 100644 --- a/server/stream-device.c +++ b/server/stream-device.c @@ -51,7 +51,8 @@ struct StreamDeviceClass { }; static GType stream_device_get_type(void) G_GNUC_CONST; -static StreamDevice *stream_device_new(SpiceCharDeviceInstance *sin, RedsState *reds); +static StreamDevice *stream_device_new(SpiceCharDeviceInstance *sin, RedsState *reds, + StreamChannel *channel); G_DEFINE_TYPE(StreamDevice, stream_device, RED_TYPE_CHAR_DEVICE) @@ -195,7 +196,7 @@ stream_device_connect(RedsState *reds, SpiceCharDeviceInstance *sin) StreamChannel *channel = stream_channel_new(reds); - StreamDevice *dev = stream_device_new(sin, reds); + StreamDevice *dev = stream_device_new(sin, reds, channel); dev->channel = channel; sif = spice_char_device_get_interface(sin); @@ -244,12 +245,15 @@ stream_device_init(StreamDevice *self) } static StreamDevice * -stream_device_new(SpiceCharDeviceInstance *sin, RedsState *reds) +stream_device_new(SpiceCharDeviceInstance *sin, RedsState *reds, StreamChannel *channel) { - return g_object_new(TYPE_STREAM_DEVICE, - "sin", sin, - "spice-server", reds, - "client-tokens-interval", 0ULL, - "self-tokens", ~0ULL, - NULL); + StreamDevice *dev; + dev = g_object_new(TYPE_STREAM_DEVICE, + "sin", sin, + "spice-server", reds, + "client-tokens-interval", 0ULL, + "self-tokens", ~0ULL, + NULL); + dev->channel = channel; + return dev; } Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel