Much appreciated res.  I have been told many times about the csRef<> smart 
pointers.  
So if I call sndsource.Invalidate() and there is only one instance of the smart 
pointer, it will basically do a delete.  What if there are two instances of it, 
and you called Invalidate on one of them?   



res <[EMAIL PROTECTED]> wrote: On 27.09.2008 03:35, Jim Sager wrote:
> I copied the following code from sndtest.  I am able to play the sound, 
> but I do not know how to deallocate the memory.  Can someone please 
> advise me what I'd have to type to deallocate memory?
> 
> I see five things to deallocate:
> soundbuf,snddata,sndstream,sndsource,sndsource3d
> 
> I just don't know what to type to deallocate them.

First, keep in mind these are interfaces and thus the underlying 
instances are freed when the last reference to them is 'released'. From 
the looks of it you use csRef<>s to store the interface pointers - good, 
that means you don't have to worry about releasing much: as soon as the 
csRef<> instances are destroyed the underlying objects are released (and 
if no other references are held, freed).

Now, pay attention to where the refs are declared. soundbuf, snddata, 
sndstream are local variables - so they're actually released as soon as 
that method below is left, you don't have to worry about them.

sndsource and sndsource3d are probably class members; that is, they are 
released when the class instance gets destroyed. If that is too late for 
you, you can do one of the following:
- assign another interface, the previously interface gets released
- manually clear the reference by calling e.g. sndsource.Invalidate()

hth,
-f.r.

> 
> const char* fname = "/this/data/lesson1/1.wav";
>   csRef soundbuf = VFS->ReadFile (fname);
>   if (!soundbuf)
>     {
> printf("Can't load file '%s'! \n", fname);
> exit(0);
> 
> }
>   csRef snddata = sndloader->LoadSound (soundbuf);
>   if (!snddata)
>  {
>    printf("Can't load sound '%s'! \n", fname);
> exit(0);
> }
> 
>   csRef sndstream = sndrenderer->CreateStream (snddata,
>       CS_SND3D_ABSOLUTE);
>   if (!sndstream)
> {
> printf("Can't create stream for '%s'!\n", fname);
> exit(0);
> }
> 
> 
>   sndsource = sndrenderer->CreateSource (sndstream);
>   if (!sndsource)
> {
> printf("Can't create source for '%s'!\n", fname);
> exit(0);
> }
>   sndsource3d = scfQueryInterface (sndsource);
> 
>   sndsource3d->SetPosition (GetSoundPos (0));
>   sndsource3d->SetVolume (3.0f);
> 
>   sndstream->Unpause ();
> 
> 
> ------------------------------------------------------------------------
> 
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Crystal-main mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/crystal-main
> Unsubscribe: mailto:[EMAIL PROTECTED]


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Crystal-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe: mailto:[EMAIL PROTECTED]


       
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Crystal-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe: mailto:[EMAIL PROTECTED]

Reply via email to