On Mon, Nov 29, 2010 at 11:00:18AM +0100, Hans de Goede wrote:
> Hi,
> 
> On 11/22/2010 09:11 PM, Alon Levy wrote:
> >Hi,
> >
> >  This is an update on the multiclient status, as the patches are still not 
> > good enough for review and even for RFC, but since Hans asked me and since 
> > it would order my thoughts a little, here is the current multiclient status 
> > and patches.
> >
> >First, git tree:
> >  git://anongit.freedesktop.org/~alon/spice server_multi_client.wip
> >
> >Implemented:
> >  make everything except sound (playback/record) channels use RedChannel in 
> > red_channel.h
> >  split up inputs_channel.c and main_channel.c from reds.c
> >  add ring of RedChannelClient into RedChannel
> >  create RedClient to hold ring of channels as well (so every 
> > RedChannelClient is doubly linked)
> >  pipe logic: each PipeItem has two reference counts, when left_target is 
> > zeroed it is removed from the pipe (ring), when refs is zeroed it is 
> > released.
> >  each RedChannelClient has a pipe pointer. This area still needs some work 
> > (that's where windows rendering artifacts are probably from)
> >  most of the caches were moved to channel_client state 
> > (DisplayChannelClient) (red_worker.c - still left as one file with both 
> > cursor and display channel, and worker event loop - not sure we need a 
> > separate event loop, or thread for that matter. unless it's a 
> > multiple-core-usage issue? or priority issue?).
> >   image cache is still left in worker - not sure actually why it works fine 
> > with it there (this is the other possible source of rendering artifacts)
> >  channels message differs based on amount of clients already connected 
> > (just a current policy)
> >
> >Status:
> >  fedora and windows boot, go into graphics mode, can connect two clients, 
> > first has inputs channel, both have display channel (first has cursor 
> > channel as well)
> >  agent breaks (crash of qemu)
> >  sound not multi-channeled (nothing except main and display, although 
> > inputs and cursor should work, just didn't test it)
> >  major rendering artifacts in windows (noted above maybe fixes)
> >  code is not reviewable (at least everything after channel refactoring)
> >
> >Additional:
> >  introduced a display test in server/tests, it runs using libtool if you 
> > want to debug
> >   libtool --mode execute gdb server/tests/test_display_no_ssl
> >  builds using automake
> >  the tree removes SSL - apparently valgrind really doesn't like openssl, 
> > this was the only way I could get relevant information from it. we use SSL 
> > for ticketing, so it is always invoked even with no secure port.
> >
> 
> Thanks for the update, not much else to add :)
> 
> Let me know when you've a set of patches which you would like to see merged
> and I'll review it for you.
> 
> Regards,
> 
> Hans

Since then I found my approach was very problematic for any major changes to 
the pipe (read - blocker) so I'm rewriting the pipe code by allocating a 
separate pipe for each client of a channel (instead of a pipe per channel as we 
have now, which is implicitly also per client per channel). This will take a 
little more time then I first expected (shocker, I know)..

Alon
_______________________________________________
Spice-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to