On 15-May-07, at 7:22 AM, Reed Hedges wrote:
> I'm planning on moving ahead with items 1, 1.5, 2, and 5 from this
> list soon.
> Anyone have any comments?
Those sound good to me. I don't like the look of item 6 though. I
think C99 is more readable.
One Big Mutex often works out to perform Just Fine. Should be
optional of course.
> Reed Hedges wrote:
>> Hello, I maintain MobileSim, the simulator for ActivMedia/
>> MobileRobots robots
>> (Pioneers) that is currently based on a heavily modified libstage
>> 2.0.0a. For
>> the next major version of MobileSim, I'd like to move to libstage
>> 2.1. To do
>> this I'll need to adapt my changes from 2.0.0a to 2.1. Please let
>> me know how
>> you'd like me to do this. Here's what I'm currently thinking in
>> three main areas:
>> 1. First, I'm thinking of adding some hooks in libstage for
>> applications (like
>> MobileSim) to add custom model types, or supercede standard models
>> with custom
>> implementations. This would let me implement these without needing
>> to modify
>> libstage directly, since some of the behavior that MobileSim
>> requires is either
>> unique to Pioneers or goes against the simplicity philosophy of
>> Stage. I can
>> adapt any particular features from these customized models to the
>> standard ones
>> that you want (see the patch tracker at sourceforge). We could
>> also easily give
>> libstage the ability to load models from plugin modules too.
>> 1.5. Ability to set up a list of custom property names that are
>> read from
>> worldfiles and attached to models. (In the generic property list.)
>> 2. Various API additions to libstage. The major ones involve
>> creating and destroying model instances at run time (rather than
>> loading them
>> from the world file). But also just various accessors and
>> utilities that make
>> it easier to do stuff with libstage, or make certain parts of the
>> stage GUI
>> customizable through that API.
>> 3. Thread safety or protection in Stage. There was some
>> preliminary support for
>> this is Stage 2.0.0a but was not enabled. What I ended up doing
>> is using One
>> Big Mutex (in the world struct) most of the time when accessing
>> the world or any
>> models from threads, though sometimes I can lock just one model
>> (however, many
>> functions eventually access the matrix and related data, which is
>> shared, and
>> ended up being difficult to reliably lock without ending up in
>> deadlocks, so the
>> One Big Mutex had to be used for those). I don't have any plans
>> on this
>> matter other than replicating something like what I did before,
>> which is
>> basically just providing functions to lock/unlock the world and
>> models, and
>> options to tell stg_world_update() whether or not to lock models
>> and how to do so.
>> 4. Some UI features.
>> 5. Support for Windows (MinGW). This is fairly easy, mostly just
>> changes to the
>> configure script and implementing some missing functions. The
>> biggest problem is
>> that the normal Windows sleep timer has different behavior and
>> worse precision
>> than on Linux, so I ended up redoing the timing in stg_world_update
>> () a bit.
>> 6. Support for old GTK versions and compilers-- we still support
>> RedHat 7.3
>> (gack) with all of our software, so this means GCC 2.96 (ick) and
>> GTK 2.0 (ugh).
>> GCC 2.96 does not support C99 so this is mostly really tedious
>> stuff like
>> moving variable declarations to the beginning of functions. GTK
>> 2.0 is missing
>> some major features Stage uses (especially when it comes to
>> creating the menus).
>> So I don't know if you want to bother trying to integrate this
>> stuff into
>> Stage-- if I find a clean way to do this though, it would be
>> helpful for us when
>> doing future modifications and improvements in future versions of
>> without having to re-merge all those changes.
>> Anyway, please let me know what you think about any of these
>> things, what parts
>> you are most interested in integrating with libstage, if you have
>> any opinion on
>> how they should be done, etc.
>> This SF.net email is sponsored by DB2 Express
>> Download DB2 Express C - the FREE version of DB2 express and take
>> control of your XML. No limits. Just data. Click to get it now.
>> Playerstage-developers mailing list
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> Playerstage-developers mailing list