[vos-d] VOS/Mac troubles and legacy VOP support

2006-03-09 Thread Karsten Otto

Hi all,

I examined my recent problems with VOS on the Mac some more, as  
described in my previous mail, using vostest mainly.


I am now pretty sure that the reason for all this trouble is a race  
condition, even though
I did not manage to catch the pesky little critter. There is some  
evidence however that

somehow some of the Tasks involved in scene building finish before their
subtasks are done. I tried the CVS version of CS for this, and a few  
times I got errors

like this:

crystalspace.mesh.object.thing:  Index number 0 is too high for a  
polygon (max=0) (polygon 'noname')!


This seems to indicate that the vertice information for the  
outerwalls were not
present when this happened. Other problems such as missing textures  
and missing geometry can also be explained by missing child relations.


Looking for an explanation I found that the VOS plugin mostly uses

vosa3dl-mainThreadTasks.push(sometask);

but in a few places uses

TaskQueue::defaultTQ().addTask(sometask);

I fixed the latter to also use the main task queue, but I actually  
made it worse.

Where vostest worked (mostly) before, it now sometimes crashes with:

terminate called after throwing an instance of 'VUtil::NullPointerError'
  what():  tried to dereference null smart pointer in - operator

I tracked this down to csMetaTexture::Setup(), where it does

vRefProperty imagedata = getImage();
if(imagedata-getDataType().substr(0, 5) == text/) {...}

without checking imagedata.isValid() as in other places.
This again can be explained by a missing child relation in case of a  
race condition,
and I assume that other places have the same problem but better error  
checking,

so the plugin behaves strangely instead of crashing.

Funnily enough, the plugin ran nicely and correctly on LINUX, even  
with the same
task queue related modification... Maybe MacOSX uses a different  
thread scheduling
mechanism, or the presence of real parallelism is a problem (testing  
on G5 with 2 Processors). Sadly, I don't have time to dig into this  
any deeper...


A final remark regarding the VOS plugin, neither the prerelease nor  
the CVS version
can handle 3DS or MD2 models, and crash unless I turn models off in  
a3dldemo.

Too bad, I liked Yohko :-)

---

Apart from messing with Ter'angreal and vostest, I also began looking  
into my actual
priority 1 task, using VOS with legacy VOP support. While I can still  
use LocalSocketSiteExtension instead of LocalVipSiteException, the  
parsing of messages
is broken in messageblock.cc. It can only handle binary encoding, but  
the sending side actually sends the old XML-like stuff.


I assume the VOPParser got axed when you removed the dependency on  
flex/bison...
Do you have an alternative parser lying around, or should I write my  
own one?


Also, could you do me a favour and add a legacy command line switch  
to VosApp

to use Socket instead of Vip?

Regards,
Karsten Otto (kao)






___
vos-d mailing list
vos-d@interreality.org
http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d


[vos-d] CrystalZilla? What for?

2006-03-09 Thread Lalo Martins
I was thinking... wouldn't it be possible to write something based on
Xgl (maybe even a plugin for Xgl proper) that renders stuff to CS surfaces?

Or - same result, different approach - a plugin for Ter'angreal and/or
CS, so that your application becomes the window+composite manager... if
Compiz can do a cube, then we certainly can render on surfaces.

yet-to-invest-the-time-to-get-Xgl-to-work-ly yours,

   Lalo Martins



(but would-definitely-bother-to-do-it-if-what-I'm-talking-about-
was-possible-ly yours too)

--
  So many of our dreams at first seem impossible,
   then they seem improbable, and then, when we
   summon the will, they soon become inevitable.
--
personal:  http://www.laranja.org/
technical:http://lalo.revisioncontrol.net/
GNU: never give up freedom http://www.gnu.org/


___
vos-d mailing list
vos-d@interreality.org
http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d