Now confirmed,it will fall in dead loop in spice_channel_iterate() for g_io_wait_interruptable()--&gt;coroutine_yield()--&gt;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">&lt;<a href="mailto:shohyanglim@gmail.com">shohyanglim@gmail.com</a>&gt;</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&#39;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 &quot;yield to<br>
itself&quot;--&gt;abort() --&gt;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 &lt;<a href="mailto:shohyanglim@gmail.com">shohyanglim@gmail.com</a>&gt; wrote:<br>
&gt; Hi,all!<br>
&gt;    I&#39;m happy to release the experimental androidSpice under LGPL,welcome to<br>
&gt; improve!<br>
&gt;    The source and wiki now dwell in google code site here:<br>
&gt; <a href="http://code.google.com/p/spice-client-android/" target="_blank">http://code.google.com/p/spice-client-android/</a><br>
&gt;    All introductions of porting can be found or redirected in the wiki<br>
&gt; page.<br>
&gt;<br>
&gt;    The structure of androidSpice:<br>
&gt; 1.Data layer,extracted from spice-gtk-0.5, the main logic and data<br>
&gt; transportation/proccessing of spice protocol,along with all its<br>
&gt; dependencies,built statically into libspicec.so<br>
&gt; 2.Data layer will add two new threads in android-worker.c for the I/O with<br>
&gt; Java UI layer via UNIX-sockets(see the PROBLEMS below)<br>
&gt; 3.UI layer,rewritten in Java. Output the Images and capture user-input<br>
&gt; events and communicate with libspicec.so.<br>
&gt;<br>
&gt; PROBLEMS:<br>
&gt;<br>
&gt; &quot;The damned greatest obstacle I&#39;ve faced in the porting lies in the<br>
&gt; structure of Android itself:It has no(at least for version&lt;2.3 ) exposed<br>
&gt; audio/image output and input API for C(only Java!)! So I have to transport<br>
&gt; all the fixed data got from spice-server to Java layer by adding two new<br>
&gt; threads to handle the I/O communication with Java UI via two<br>
&gt; UNIX-sockets,that&#39;s the leg-drawing of speed. Besides, quic.c in client is<br>
&gt; buggy of SIGBUS or SIGSEGV on android(anyone can fix it?thx!),I have no<br>
&gt; better way but to force use of JPEG compression in server and the client<br>
&gt; will send jpeg data directly to Java UI for output, it&#39;s queer and should<br>
&gt; be<br>
&gt; condemned(&#39;cause Spice&#39;s value is in the image processing ability)&quot;<br>
&gt;<br>
&gt; So now It just WORKS,but works badly, the first untolerable bug is this<br>
&gt;<br>
&gt; Bug 1:If press fast on the device the spice-server as well as the<br>
&gt; android-spice-client will be choked and no image updates will be sent out<br>
&gt; from server.<br>
&gt; I&#39;m still working on this bug,I need help!<br>
&gt;<br>
&gt; Best regards,<br>
&gt;     --林<br>
&gt;<br>
</div></div></blockquote></div><br>