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
_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to