Now confirmed,it will fall in dead loop in spice_channel_iterate() for g_io_wait_interruptable()-->coroutine_yield()-->coroutine_swap() because coroutine_swap() always returns NULL, how to fix this? Any spice-gtk guys can help me?<br>
Rgrds.<br><br><div class="gmail_quote">On Mon, Apr 25, 2011 at 9:08 PM, Shuxiang Lim <span dir="ltr"><<a href="mailto:shohyanglim@gmail.com">shohyanglim@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
After some tracing work: I found that,when no input occurs in the<br>
client,the output flow from server to client may be jammed by the slow<br>
network but will never be choked.But when there's input, the client<br>
will always fall soon in the endless calling for coroutine_yield() and<br>
coroutine_swap() in coroutine_gthread.c (for threads prior<br>
swapping???why should this?) and usually cause the "yield to<br>
itself"-->abort() -->segfault. Thus,client will have no mood to<br>
receive data from server at all,and the output will be choked(input<br>
still OK).<br>
So,why does such dead-lock-liked thing happens only on android,how<br>
can I fix this,or how can I disable such Swapping? Any ideas?<br>
Rgrds.<br>
<div><div></div><div class="h5"><br>
<br>
On 4/25/11, Shuxiang Lim <<a href="mailto:shohyanglim@gmail.com">shohyanglim@gmail.com</a>> wrote:<br>
> Hi,all!<br>
> I'm happy to release the experimental androidSpice under LGPL,welcome to<br>
> improve!<br>
> The source and wiki now dwell in google code site here:<br>
> <a href="http://code.google.com/p/spice-client-android/" target="_blank">http://code.google.com/p/spice-client-android/</a><br>
> All introductions of porting can be found or redirected in the wiki<br>
> page.<br>
><br>
> The structure of androidSpice:<br>
> 1.Data layer,extracted from spice-gtk-0.5, the main logic and data<br>
> transportation/proccessing of spice protocol,along with all its<br>
> dependencies,built statically into libspicec.so<br>
> 2.Data layer will add two new threads in android-worker.c for the I/O with<br>
> Java UI layer via UNIX-sockets(see the PROBLEMS below)<br>
> 3.UI layer,rewritten in Java. Output the Images and capture user-input<br>
> events and communicate with libspicec.so.<br>
><br>
> PROBLEMS:<br>
><br>
> "The damned greatest obstacle I've faced in the porting lies in the<br>
> structure of Android itself:It has no(at least for version<2.3 ) exposed<br>
> audio/image output and input API for C(only Java!)! So I have to transport<br>
> all the fixed data got from spice-server to Java layer by adding two new<br>
> threads to handle the I/O communication with Java UI via two<br>
> UNIX-sockets,that's the leg-drawing of speed. Besides, quic.c in client is<br>
> buggy of SIGBUS or SIGSEGV on android(anyone can fix it?thx!),I have no<br>
> better way but to force use of JPEG compression in server and the client<br>
> will send jpeg data directly to Java UI for output, it's queer and should<br>
> be<br>
> condemned('cause Spice's value is in the image processing ability)"<br>
><br>
> So now It just WORKS,but works badly, the first untolerable bug is this<br>
><br>
> Bug 1:If press fast on the device the spice-server as well as the<br>
> android-spice-client will be choked and no image updates will be sent out<br>
> from server.<br>
> I'm still working on this bug,I need help!<br>
><br>
> Best regards,<br>
> --林<br>
><br>
</div></div></blockquote></div><br>