[Spice-devel] Try to port spicec into Android

Shuxiang Lim shohyanglim at gmail.com
Thu Mar 3 23:38:51 PST 2011


Hi all,
   I'm trying these days to port spicec into Android.But it's a rather TOUGH
way to go because the structure of spicec and android are desperately
inappropriate:the linux version of spicec is based on the X11,which is not
available in Android,thus the UI of spicec should be rewritten from
scratch...More troublesome is that the UI part and data part in current
spicec is entangled in the hierarchical system in C++! So my plan is this:
first split the spicec into two parts,data and UI,transform the data part
into libspicec.so;then rewrite the UI part in JAVA. Besides, I should also
tinker some problems caused by the Crippled NDK C++ support and the Lamed
bionic c lib in android .
   And now the first step is roughly done,hence the change of the spicec
structure:
   From
                                                            |-->playback
thread
                                                            |-->cursor
thread
spicec:spicec process(application process)-->main thread->|-->*record thread
*
                                                            |-->inputs
thread
                                                            |-->display
thread
To:
===========================>
                         |-->libspicec.so:application thread-->main
thread------>|
                         |
|
                         |              |<--display thread<--|
     |
                         |         |--->|<--cursor
thread<---|<------------------|
                         |         |    |<--inputs thread<---|
spicec:spicec process--->|         |    |<--playback thread<-|
                         |         |
                         |         |
                         |         |
<---------------------------------------------|
                         |
      |
                         |
      |
                         |-->spicec:platform
thread------------------------------>|

The hierarchical relationship has been unleashed with one thread(record
channel) deleted and two new threads (app and platform)  created. The first
as the "data thread",the other as the "work thread" which is driven by the
signals from the first thread as well as its sub threads and requested to do
the UI-related work:

platform thread:------------>blocked and waiting:-->job
request-<--------------|
                                          |           |
                        |
                                          ^           |
                        |
                                          |
|                         |
                                          |<----------|-<-|
                    |
                                                      |   |
                |
        platform thread over<----------if(job==die)<--| send req. blocked
and waiting
                                              |           ^ |
    |
                                              |           | |
       ^
                                              |           | |
_________|_________
                                              |           | |
| app/plbk/cusor
thd
             |<---job done----dojob()<--else--|           | |->go on->|
__________________
             |                                            |
             |------------------------------->feed back-->|


So the next work is to expose the native JNI interface in platform thread to
the UI written in Android SDK. I try to use the UI
frame of AndroidVNCViewer in
code.google.com/p/*android*-*vnc*-viewer/,then the work of platform
thread will be replaced by UI but the msg
communication to libspicec will be remained. That's the easiest way I can
envisage except rewriting all parts in spicec from scratch.
It's tough too, for I have poor experiance in Java...
   Anyway, is there any other guy working on this? Is my way feasible??Any
Ideas or help is appreciated.
   Best regards.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20110304/3b9bd031/attachment.html>


More information about the Spice-devel mailing list