[Spice-devel] Necessary code ??

Frediano Ziglio fziglio at redhat.com
Fri Sep 16 16:17:51 UTC 2016


Hi,
  I came to this code in dcc.c (dcc_clear_surface_drawables_from_pipe function):

    /*
     * in case that the pipe didn't contain any item that is dependent on the surface, but
     * there is one during sending. Use a shorter timeout, since it is just one item
     */
    return red_channel_client_wait_outgoing_item(rcc, DISPLAY_CLIENT_SHORT_TIMEOUT);

This function is called when there are no items in the pipe related to the surface
specified (as the comment says).
However I really don't understand why the call is needed.
When an item is extracted from the queue send_item is called then the message is
marshalled and sent to the client. Now all structure should be freed and the message
would be send in any case to the client so what's the purpose of waiting?
I understood that all this wait is for making sure nobody is using some structure.
Is this related to urgent data (actually free list sent by the DisplayChannel) ?
This urgent handling is quite confusing, wouldn't be enough to insert the current
item back into the queue and then all urgent data in front too instead of using
all these fields?

Is somebody confident with these part of the code?

Frediano


More information about the Spice-devel mailing list