Well, I think I may try the &quot;--with-coroutine=gthread&quot; in spice-gtk configuring to walk around that...<br><br><div class="gmail_quote">On Wed, Mar 9, 2011 at 11:10 AM, 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;">Hi,I need help!<br>  Now I&#39;ve managed to divided spicec-gtk into two parts libspicec.so(based on libpixman.so,libglib-2.0.so...No relation to X11 at all) and spicec(based on libspicec.so and libgtk.so...). And the glib2.0 porting to Android is also completed. But I&#39;m blocked in compiling libspicec onto Android at the begining for the continuation.c uses the functions in &lt;ucontext.h&gt; :setcontext(),getcontext()..., which are some thread-related funcs as I know,and, definitely unsuprisingly, Android libc doesn&#39;t have them! Is there a way to drop or replace the use of such funcs? Or should I manually write setcontext from scratch?<br>

  RGRDs.<div><div></div><div class="h5"><br><br><div class="gmail_quote">On Mon, Mar 7, 2011 at 5:14 PM, Alon Levy <span dir="ltr">&lt;<a href="mailto:alevy@redhat.com" target="_blank">alevy@redhat.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;">
<div>On Mon, Mar 07, 2011 at 09:08:28AM +0800, Shuxiang Lim wrote:<br>
&gt; Option 1: use spice-gtk with a gtk android backend<br>
&gt; a) compiling gtk for it would be possible.<br>
&gt; b) write a partial gtk backend, good enough for spice-gtk.<br>
&gt; c) no changes to spice-gtk.<br>
&gt;    Yep,that&#39;s really a good hope,but it&#39;s another project(too huge and far<br>
&gt; away for me now):<br>
&gt; Project:&quot;GTK for Android.&quot;. So now I can use only the Android SDK to finish<br>
&gt; the UI(the new native UI APIs in NDK is not reliable in versions).<br>
<br>
</div>Yeah, I think you&#39;re right, I can&#39;t find anyone already working on this by<br>
simple web search. Maybe spice-gtk&#39;s non ui objects are dependent only on<br>
gobject / stuff that is easy to just drop in (ugly, but still more maintainable<br>
then basing your work on spicec, long term).<br>
<div><br>
&gt;    And also you&#39;ve referred that &quot;spicec is already platform independent&quot;,<br>
&gt; that&#39;s true to Linux and Windows,but not to Android,for such independence is<br>
&gt; based on the C++ independence over the os which cannot stand through the<br>
&gt; JAVA UIed android.So there is no way to just add a subdir ./android under<br>
&gt; spice/client along with ./x11 and ./windows. It should be a combined proj.<br>
&gt; of C/C++ and Java. (That&#39;s why I hate Android and yearn for Maemo/Meego.)<br>
<br>
</div>Definitely easier to port to Maemo :)<br>
<div><div></div><div><br>
&gt;    Regards.<br>
&gt;<br>
&gt; On Fri, Mar 4, 2011 at 7:04 PM, Alon Levy &lt;<a href="mailto:alevy@redhat.com" target="_blank">alevy@redhat.com</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; On Fri, Mar 04, 2011 at 06:21:19PM +0800, Shuxiang Lim wrote:<br>
&gt; &gt; &gt;  Hi, friends,<br>
&gt; &gt; &gt;     Thanks for your replies. It&#39;s definitely right till now I&#39;ve been<br>
&gt; &gt; &gt; working a tougher way compared to spice-gtk.And actually I&#39;ve considered<br>
&gt; &gt; to<br>
&gt; &gt; &gt; steer my way to the latter in fear of the troublesome and crippled C++<br>
&gt; &gt; &gt; support in Android NDK:C is more &quot;simple and safe&quot; in Android than C++.<br>
&gt; &gt; &gt; But,AFAIK,there is no gtk port for Android yet. And the biggest obstacle<br>
&gt; &gt; is<br>
&gt; &gt; &gt; the framework of Android:in its design,all UI should be done in JAVA<br>
&gt; &gt; powered<br>
&gt; &gt; &gt; by SKIA libs.Therefore the port of UI libs(GTK,etc) will be choked by the<br>
&gt; &gt; &gt; I/O level because Android don&#39;t completely expose them  at all!(I once<br>
&gt; &gt; &gt; managed to port Xfbdev onto it,but that&#39;s not commercially practical at<br>
&gt; &gt; all,<br>
&gt; &gt; &gt; it&#39;s just a geeky trick maybe,an app in Android SHOULD NOT do this.) Only<br>
&gt; &gt; &gt; the algorithm/data computing-related C/C++ libs are welcomed to be the<br>
&gt; &gt; JNI<br>
&gt; &gt; &gt; servants to JAVA UI apps in Android.<br>
&gt; &gt; &gt;    You see, in such aspect, there is not too much diff between the C++<br>
&gt; &gt; way<br>
&gt; &gt; &gt; and gtk way in the porting of UI part.<br>
&gt; &gt;<br>
&gt; &gt; I&#39;m going to try to prove that wrong by grepping hoping it makes sense, I<br>
&gt; &gt; never<br>
&gt; &gt; actually coded in gtk:<br>
&gt; &gt;<br>
&gt; &gt; $ git grep GObjectClass<br>
&gt; &gt; gtk/channel-cursor.c:    GObjectClass *gobject_class =<br>
&gt; &gt; G_OBJECT_CLASS(klass);<br>
&gt; &gt; gtk/channel-display.c:    GObjectClass *gobject_class =<br>
&gt; &gt; G_OBJECT_CLASS(klass);<br>
&gt; &gt; gtk/channel-inputs.c:    GObjectClass *gobject_class =<br>
&gt; &gt; G_OBJECT_CLASS(klass);<br>
&gt; &gt; gtk/channel-main.c:    GObjectClass *gobject_class = G_OBJECT_CLASS(klass);<br>
&gt; &gt; gtk/channel-playback.c:    GObjectClass *gobject_class =<br>
&gt; &gt; G_OBJECT_CLASS(klass);<br>
&gt; &gt; gtk/channel-record.c:    GObjectClass *gobject_class =<br>
&gt; &gt; G_OBJECT_CLASS(klass);<br>
&gt; &gt; gtk/spice-audio.h:    GObjectClass parent_class;<br>
&gt; &gt; gtk/spice-channel.c:    GObjectClass *gobject_class = G_OBJECT_CLASS<br>
&gt; &gt; (klass);<br>
&gt; &gt; gtk/spice-channel.h:    GObjectClass parent_class;<br>
&gt; &gt; gtk/spice-gstaudio.c:    GObjectClass *gobject_class =<br>
&gt; &gt; G_OBJECT_CLASS(klass);<br>
&gt; &gt; gtk/spice-pulse.c:    GObjectClass *gobject_class = G_OBJECT_CLASS(klass);<br>
&gt; &gt; gtk/spice-session.c:    GObjectClass *gobject_class =<br>
&gt; &gt; G_OBJECT_CLASS(klass);<br>
&gt; &gt; gtk/spice-session.h:    GObjectClass parent_class;<br>
&gt; &gt; gtk/spice-widget.c:    GObjectClass *gobject_class = G_OBJECT_CLASS(klass);<br>
&gt; &gt;<br>
&gt; &gt; otoh:<br>
&gt; &gt; U playa:spice-gtk alon (master)$ git grep --name-only GdkWindow<br>
&gt; &gt; gtk/spice-widget-cairo.c<br>
&gt; &gt; gtk/spice-widget.c<br>
&gt; &gt;<br>
&gt; &gt; (if you grep Window you get false negatives because of the compression<br>
&gt; &gt; window).<br>
&gt; &gt;<br>
&gt; &gt; Anyway, this is a lame attempt to prove the gtk stuff that does ui (read:<br>
&gt; &gt; uses X)<br>
&gt; &gt; is separated in the code/architecture level :)<br>
&gt; &gt;<br>
&gt; &gt; &gt;    So for me the shining light of spicec-gtk is not in &quot;GTK&quot; but in &quot;C&quot;.<br>
&gt; &gt;  I<br>
&gt; &gt; &gt; dare not to say I&#39;m clear about every nook in spicec at all. My best hope<br>
&gt; &gt; is<br>
&gt; &gt; &gt; that the IO in spicec shall be straight and succinct ,the inner<br>
&gt; &gt; &gt; graphic/sound computing(decompress,etc) shall have NO relation with upper<br>
&gt; &gt; UI<br>
&gt; &gt; &gt; libs at all, so I can pipe the Finished image flow into UI through JNI<br>
&gt; &gt; &gt; interfaces and direct the user input backward.  (That&#39;s why I can borrow<br>
&gt; &gt; the<br>
&gt; &gt; &gt; UI from AndroidVNCViewer)<br>
&gt; &gt;<br>
&gt; &gt; Yeah, I think it is generally so, but again, it&#39;s so in spice-gtk too, and<br>
&gt; &gt; that&#39;s<br>
&gt; &gt; our only future supported client (*).<br>
&gt; &gt;<br>
&gt; &gt; (*) plans do change.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;  libspicec.so(do most jobs)<br>
&gt; &gt; &gt; &lt;==finishedimages/audio&gt;&gt;===&lt;&lt;inputs==&gt;spicec.java.ui(only UI)<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Am I right? Is there any design that will frustrate this in spicec or<br>
&gt; &gt; &gt; spice-gtk?<br>
&gt; &gt;<br>
&gt; &gt; spicec is already separated at the platform level, since it uses low level<br>
&gt; &gt; libraries directly, unlike spice-gtk (X and GDI). So you would basically<br>
&gt; &gt; be adding a platform/android.<br>
&gt; &gt;<br>
&gt; &gt; In gtk I really haven&#39;t done android development, ever, at least not in the<br>
&gt; &gt; C level, but I was hoping:<br>
&gt; &gt; Option 1: use spice-gtk with a gtk android backend<br>
&gt; &gt; a) compiling gtk for it would be possible.<br>
&gt; &gt; b) write a partial gtk backend, good enough for spice-gtk.<br>
&gt; &gt; c) no changes to spice-gtk.<br>
&gt; &gt;<br>
&gt; &gt; Option 2 is of course to make spice-gtk also have platform separation,<br>
&gt; &gt; while<br>
&gt; &gt; still using gtk/gobject for all stuff that would Just Work when doing 1.a<br>
&gt; &gt; (the<br>
&gt; &gt; data structures, the signals, the macros, the introspection?).<br>
&gt; &gt;<br>
&gt; &gt; &gt;   Regards.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; On Fri, Mar 4, 2011 at 4:36 PM, Alon Levy &lt;<a href="mailto:alevy@redhat.com" target="_blank">alevy@redhat.com</a>&gt; wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; On Fri, Mar 04, 2011 at 03:38:51PM +0800, Shuxiang Lim wrote:<br>
&gt; &gt; &gt; &gt; &gt; Hi all,<br>
&gt; &gt; &gt; &gt; &gt;    I&#39;m trying these days to port spicec into Android.But it&#39;s a<br>
&gt; &gt; rather<br>
&gt; &gt; &gt; &gt; TOUGH<br>
&gt; &gt; &gt; &gt; &gt; way to go because the structure of spicec and android are desperately<br>
&gt; &gt; &gt; &gt; &gt; inappropriate:the linux version of spicec is based on the X11,which<br>
&gt; &gt; is<br>
&gt; &gt; &gt; &gt; not<br>
&gt; &gt; &gt; &gt; &gt; available in Android,thus the UI of spicec should be rewritten from<br>
&gt; &gt; &gt; &gt; &gt; scratch...More troublesome is that the UI part and data part in<br>
&gt; &gt; current<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Haven&#39;t looked at your proposal below yet, but did you check the<br>
&gt; &gt; spice-gtk<br>
&gt; &gt; &gt; &gt; work? maybe it is easier to start from that? are gtk libraries<br>
&gt; &gt; available on<br>
&gt; &gt; &gt; &gt; android? not talking about X. spice-gtk has objects for connection and<br>
&gt; &gt; &gt; &gt; channels<br>
&gt; &gt; &gt; &gt; that afaik don&#39;t do any output, that&#39;s separate from the actual widget<br>
&gt; &gt; that<br>
&gt; &gt; &gt; &gt; uses X. Also, gtk 3 has backends - did anyone do a backend for android?<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Since going forward we plan to ditch the spicec client, that would be<br>
&gt; &gt; &gt; &gt; really<br>
&gt; &gt; &gt; &gt; preffered. Now that I see what you have planned it sounds good, but<br>
&gt; &gt; better<br>
&gt; &gt; &gt; &gt; to use spice-gtk.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; of course that&#39;s not to say we won&#39;t love to see this working anyway :)<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; spicec is entangled in the hierarchical system in C++! So my plan is<br>
&gt; &gt; &gt; &gt; this:<br>
&gt; &gt; &gt; &gt; &gt; first split the spicec into two parts,data and UI,transform the data<br>
&gt; &gt; part<br>
&gt; &gt; &gt; &gt; &gt; into libspicec.so;then rewrite the UI part in JAVA. Besides, I should<br>
&gt; &gt; &gt; &gt; also<br>
&gt; &gt; &gt; &gt; &gt; tinker some problems caused by the Crippled NDK C++ support and the<br>
&gt; &gt; Lamed<br>
&gt; &gt; &gt; &gt; &gt; bionic c lib in android .<br>
&gt; &gt; &gt; &gt; &gt;    And now the first step is roughly done,hence the change of the<br>
&gt; &gt; spicec<br>
&gt; &gt; &gt; &gt; &gt; structure:<br>
&gt; &gt; &gt; &gt; &gt;    From<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; |--&gt;playback<br>
&gt; &gt; &gt; &gt; &gt; thread<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; |--&gt;cursor<br>
&gt; &gt; &gt; &gt; &gt; thread<br>
&gt; &gt; &gt; &gt; &gt; spicec:spicec process(application process)--&gt;main thread-&gt;|--&gt;*record<br>
&gt; &gt; &gt; &gt; thread<br>
&gt; &gt; &gt; &gt; &gt; *<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; |--&gt;inputs<br>
&gt; &gt; &gt; &gt; &gt; thread<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; |--&gt;display<br>
&gt; &gt; &gt; &gt; &gt; thread<br>
&gt; &gt; &gt; &gt; &gt; To:<br>
&gt; &gt; &gt; &gt; &gt; ===========================&gt;<br>
&gt; &gt; &gt; &gt; &gt;                          |--&gt;libspicec.so:application thread--&gt;main<br>
&gt; &gt; &gt; &gt; &gt; thread------&gt;|<br>
&gt; &gt; &gt; &gt; &gt;                          |<br>
&gt; &gt; &gt; &gt; &gt; |<br>
&gt; &gt; &gt; &gt; &gt;                          |              |&lt;--display thread&lt;--|<br>
&gt; &gt; &gt; &gt; &gt;      |<br>
&gt; &gt; &gt; &gt; &gt;                          |         |---&gt;|&lt;--cursor<br>
&gt; &gt; &gt; &gt; &gt; thread&lt;---|&lt;------------------|<br>
&gt; &gt; &gt; &gt; &gt;                          |         |    |&lt;--inputs thread&lt;---|<br>
&gt; &gt; &gt; &gt; &gt; spicec:spicec process---&gt;|         |    |&lt;--playback thread&lt;-|<br>
&gt; &gt; &gt; &gt; &gt;                          |         |<br>
&gt; &gt; &gt; &gt; &gt;                          |         |<br>
&gt; &gt; &gt; &gt; &gt;                          |         |<br>
&gt; &gt; &gt; &gt; &gt; &lt;---------------------------------------------|<br>
&gt; &gt; &gt; &gt; &gt;                          |<br>
&gt; &gt; &gt; &gt; &gt;       |<br>
&gt; &gt; &gt; &gt; &gt;                          |<br>
&gt; &gt; &gt; &gt; &gt;       |<br>
&gt; &gt; &gt; &gt; &gt;                          |--&gt;spicec:platform<br>
&gt; &gt; &gt; &gt; &gt; thread------------------------------&gt;|<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; The hierarchical relationship has been unleashed with one<br>
&gt; &gt; thread(record<br>
&gt; &gt; &gt; &gt; &gt; channel) deleted and two new threads (app and platform)  created. The<br>
&gt; &gt; &gt; &gt; first<br>
&gt; &gt; &gt; &gt; &gt; as the &quot;data thread&quot;,the other as the &quot;work thread&quot; which is driven<br>
&gt; &gt; by<br>
&gt; &gt; &gt; &gt; the<br>
&gt; &gt; &gt; &gt; &gt; signals from the first thread as well as its sub threads and<br>
&gt; &gt; requested to<br>
&gt; &gt; &gt; &gt; do<br>
&gt; &gt; &gt; &gt; &gt; the UI-related work:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; platform thread:------------&gt;blocked and waiting:--&gt;job<br>
&gt; &gt; &gt; &gt; &gt; request-&lt;--------------|<br>
&gt; &gt; &gt; &gt; &gt;                                           |           |<br>
&gt; &gt; &gt; &gt; &gt;                         |<br>
&gt; &gt; &gt; &gt; &gt;                                           ^           |<br>
&gt; &gt; &gt; &gt; &gt;                         |<br>
&gt; &gt; &gt; &gt; &gt;                                           |<br>
&gt; &gt; &gt; &gt; &gt; |                         |<br>
&gt; &gt; &gt; &gt; &gt;                                           |&lt;----------|-&lt;-|<br>
&gt; &gt; &gt; &gt; &gt;                     |<br>
&gt; &gt; &gt; &gt; &gt;                                                       |   |<br>
&gt; &gt; &gt; &gt; &gt;                 |<br>
&gt; &gt; &gt; &gt; &gt;         platform thread over&lt;----------if(job==die)&lt;--| send req.<br>
&gt; &gt; blocked<br>
&gt; &gt; &gt; &gt; &gt; and waiting<br>
&gt; &gt; &gt; &gt; &gt;                                               |           ^ |<br>
&gt; &gt; &gt; &gt; &gt;     |<br>
&gt; &gt; &gt; &gt; &gt;                                               |           | |<br>
&gt; &gt; &gt; &gt; &gt;        ^<br>
&gt; &gt; &gt; &gt; &gt;                                               |           | |<br>
&gt; &gt; &gt; &gt; &gt; _________|_________<br>
&gt; &gt; &gt; &gt; &gt;                                               |           | |<br>
&gt; &gt; &gt; &gt; &gt; | app/plbk/cusor<br>
&gt; &gt; &gt; &gt; &gt; thd<br>
&gt; &gt; &gt; &gt; &gt;              |&lt;---job done----dojob()&lt;--else--|           | |-&gt;go<br>
&gt; &gt; on-&gt;|<br>
&gt; &gt; &gt; &gt; &gt; __________________<br>
&gt; &gt; &gt; &gt; &gt;              |                                            |<br>
&gt; &gt; &gt; &gt; &gt;              |-------------------------------&gt;feed back--&gt;|<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; So the next work is to expose the native JNI interface in platform<br>
&gt; &gt; thread<br>
&gt; &gt; &gt; &gt; to<br>
&gt; &gt; &gt; &gt; &gt; the UI written in Android SDK. I try to use the UI<br>
&gt; &gt; &gt; &gt; &gt; frame of AndroidVNCViewer in<br>
&gt; &gt; &gt; &gt; &gt; <a href="http://code.google.com/p/*android*-*vnc*-viewer/,then" target="_blank">code.google.com/p/*android*-*vnc*-viewer/,then</a> the work of platform<br>
&gt; &gt; &gt; &gt; &gt; thread will be replaced by UI but the msg<br>
&gt; &gt; &gt; &gt; &gt; communication to libspicec will be remained. That&#39;s the easiest way I<br>
&gt; &gt; can<br>
&gt; &gt; &gt; &gt; &gt; envisage except rewriting all parts in spicec from scratch.<br>
&gt; &gt; &gt; &gt; &gt; It&#39;s tough too, for I have poor experiance in Java...<br>
&gt; &gt; &gt; &gt; &gt;    Anyway, is there any other guy working on this? Is my way<br>
&gt; &gt; &gt; &gt; feasible??Any<br>
&gt; &gt; &gt; &gt; &gt; Ideas or help is appreciated.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; See above for ideas, don&#39;t read them as a criticism, I think this is<br>
&gt; &gt; &gt; &gt; fantastic<br>
&gt; &gt; &gt; &gt; what you&#39;ve done so far. I remember someone posting &quot;we are working on<br>
&gt; &gt; &gt; &gt; andriod<br>
&gt; &gt; &gt; &gt; in our spare time&quot; post to spice-devel, please grep the archive.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Alon<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;    Best regards.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; &gt; Spice-devel mailing list<br>
&gt; &gt; &gt; &gt; &gt; <a href="mailto:Spice-devel@lists.freedesktop.org" target="_blank">Spice-devel@lists.freedesktop.org</a><br>
&gt; &gt; &gt; &gt; &gt; <a href="http://lists.freedesktop.org/mailman/listinfo/spice-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/spice-devel</a><br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; Spice-devel mailing list<br>
&gt; &gt; &gt; <a href="mailto:Spice-devel@lists.freedesktop.org" target="_blank">Spice-devel@lists.freedesktop.org</a><br>
&gt; &gt; &gt; <a href="http://lists.freedesktop.org/mailman/listinfo/spice-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/spice-devel</a><br>
&gt; &gt;<br>
&gt; &gt;<br>
<br>
&gt; _______________________________________________<br>
&gt; Spice-devel mailing list<br>
&gt; <a href="mailto:Spice-devel@lists.freedesktop.org" target="_blank">Spice-devel@lists.freedesktop.org</a><br>
&gt; <a href="http://lists.freedesktop.org/mailman/listinfo/spice-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/spice-devel</a><br>
<br>
</div></div></blockquote></div><br>
</div></div></blockquote></div><br>