Re: [Flightgear-devel] [Simgear-cvslogs] CVS: SimGear/simgear/scene/model shadanim.cxx, 1.9, 1.10

2007-01-29 Thread Mathias Fröhlich

Hi Fred,

On Monday 29 January 2007 10:03, Frederic Bouvier wrote:
 The core of the fix is the change from a pointer to a reference to avoid
 the deletion of the texture while the pointer still hold a non null value.
Thanks.

   Greetings

 Mathias

-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT  business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV
___
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel


Re: [Flightgear-devel] [Simgear-cvslogs] CVS: SimGear/simgear/scene/model shadanim.cxx, 1.9, 1.10

2007-01-28 Thread Mathias Fröhlich
On Friday 26 January 2007 21:30, Frederic Bouvier wrote:
 Update of /var/cvs/SimGear-0.3/SimGear/simgear/scene/model
 In directory baron:/tmp/cvs-serv5514

 Modified Files:
   shadanim.cxx
 Log Message:
 Ensure a reference on the cube map texture is always held

Fred, that code was correct (appart from not being deleted). I have that kind 
of code at more places.
That technique called 'double checked locking'.
You don't bother locking a mutex if it is already there. But if the instance 
must be created, you have to ensure that you are the only one. therefore you 
need to ask if it is there a second time ...
That is not time critical here, so I don't bother locking, but in general this 
kind of code should be left as is ...

   Greetings

Mathias


 Index: shadanim.cxx
 ===
 RCS file: /var/cvs/SimGear-0.3/SimGear/simgear/scene/model/shadanim.cxx,v
 retrieving revision 1.9
 retrieving revision 1.10
 diff -C 2 -r1.9 -r1.10
 *** shadanim.cxx  3 Dec 2006 16:57:21 -   1.9
 --- shadanim.cxx  26 Jan 2007 20:30:02 -  1.10
 ***
 *** 127,138 
   getOrCreateTextureCubeMap()
   {
 !   static osg::TextureCubeMap* textureCubeMap = 0;
 !   if (textureCubeMap)
 ! return textureCubeMap;

 static SGMutex mutex;
 SGGuardSGMutex locker(mutex);
 !   if (textureCubeMap)
 ! return textureCubeMap;

 // create and setup the texture object
 --- 127,136 
   getOrCreateTextureCubeMap()
   {
 !static osg::ref_ptrosg::TextureCubeMap textureCubeMap;

 static SGMutex mutex;
 SGGuardSGMutex locker(mutex);
 !   if (textureCubeMap.get())
 ! return textureCubeMap.get();

 // create and setup the texture object
 ***
 *** 147,151 
 textureCubeMap-setUpdateCallback(new SGMapGenCallback);

 !   return textureCubeMap;
   }

 --- 145,149 
 textureCubeMap-setUpdateCallback(new SGMapGenCallback);

 !   return textureCubeMap.get();
   }



 ___
 Simgear-cvslogs mailing list
 [EMAIL PROTECTED]
 http://mail.flightgear.org/mailman/listinfo/simgear-cvslogs
 2f585eeea02e2c79d7b1d8c4963bae2d

-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT  business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.phpp=sourceforgeCID=DEVDEV
___
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel