Hey,

On Fri, Apr 03, 2015 at 11:43:34AM -0400, Marc-André Lureau wrote:
> Hi
> 
> ----- Original Message -----
> > Hi,
> > On Fri, Apr 03, 2015 at 04:34:30PM +0200, Marc-André Lureau wrote:
> > > Hi
> > >
> > > On Fri, Apr 3, 2015 at 3:53 PM, Victor Toso <[email protected]> wrote:
> > >
> > > > +    SPICE_AUDIO_GET_CLASS(audio)->get_playback_volume_info_async(audio,
> > > > +            audio_playback_volume_info_cb, main_channel);
> > > >
> > >
> > > It would need to keep a reference on main_channel, and an
> > > audio_sync_cancellable for the case where the channel is to be
> > > disconnected.
> > > 
> > > Also, a channel may be recycled. The state should be reset in
> > > channel_reset() for further usages.
> > 
> > Sorry, I did not understand why I need to keep a reference to
> > main_channel in this case and what should be done when the
> > channel-playback or channel-record is reset.
> >
> > Could you please clarify?
>
> If the main channel is destroyed before the async callback is called this 
> will run into criticals (in the best case ;)
>
> Using a cancellable and a reference on the channel will ensure that you can 
> cancel the call and run the callback with a valid reference.

I see. I thought that the cancellable would be enough. Thanks for
clarifying this.

> Finally, the channel_reset() is there to clean-up the channel state so it can 
> be reused for a new connection (it's not the best design ever, but it avoids 
> breaking API or moving the channel state in another structure). If the 
> channel has been configured by the client, it should keep those values, but 
> any channel state should be cleared (the agent_volume_playback_sync for 
> instance)

I understand now :-)
Thanks again,
_______________________________________________
Spice-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to