Hi Allen,
Allen Bierbaum wrote:
> On Thu, Mar 12, 2009 at 3:55 PM, Dirk Reiners <[email protected]> wrote:
>> Allen Bierbaum wrote:
>>> How do you keep a weak pointer across threads? Is there an MTWeakPtr
>>> or equivalent (haven't seen it so far).
>> Hasn't come up yet as a need.
>
> The place I need it is for a global geometry factory.
>
> I have a system that basically looks something like this:
>
> class Factory:
> std:map<style, OSG::ChunkMaterialXXX> style cache;
>
> OSG::NodeMTRecPtr buildGeomNode(myGeom* geom, Style style);
>
> I want to cache the style materials across multiple built geometries.
> But once the last geometry using that cached style is removed, I don't
> want to hold onto the material any more. Until this morning I didn't
> think I would be able to do this, but now I think I could do it with
> an MTWeakPtr. (I need MT because this can be called from multiple
> threads)
Makes sense. Would also be a nice application of it.
>> Should be pretty easy to do though, just add a
>>
>>
>> struct MTWeakRefCountPolicy : public WeakRefCountPolicy
>> {
>> template <class T>
>> static T *validate (T *pObject)
>> {
>> return convertToCurrentAspect(pObject);
>> }
>>
>> template <class T>
>> static T &dereference(T *pObject)
>> {
>> return *(validate(pObject));
>> }
>> };
>>
>> and use it. Or am I too optimistic here?
>
> So, where exactly would I add this in the OpenSG code? Also, where
> should I put the ptr type aliases?
In Source/Base/FieldContainer/Base/OSGRefCountPolicies.h
Aliases probably in the catch-all macros OSG_GEN_INTERNALPTR and
OSG_GEN_CONTAINERPTR in Source/Base/Base/OSGContainerForwards.h.
Let us know if it works...
Dirk
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users