Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
fmodaudio [2019/08/13 08:31] – [Add a FadePoint] admin | fmodaudio [2019/08/13 09:15] – [Remarks] admin | ||
---|---|---|---|
Line 189: | Line 189: | ||
procedure TForm1.FormShow(Sender: | procedure TForm1.FormShow(Sender: | ||
- | var LSound : PGorillaFMODSound; | + | var LSound : IGorillaFMODSound; |
begin | begin | ||
{...} | {...} | ||
LSound := LFMOD.LoadSoundFromFile(' | LSound := LFMOD.LoadSoundFromFile(' | ||
- | LSound^.Mode := FMOD_LOOP_NORMAL; | + | LSound.Mode := FMOD_LOOP_NORMAL; |
end; | end; | ||
</ | </ | ||
Line 209: | Line 209: | ||
Next step: [[assetsmanager|AssetsManager]] | Next step: [[assetsmanager|AssetsManager]] | ||
+ | ===== Remarks ===== | ||
+ | It is not allowed to release FMOD interfaces when the TGorillaFMODAudioManager component, especially the IGorillaFMODSystem interface inside of it, is already destroyed. | ||
+ | In this case you will receive an AccessViolation, | ||
+ | |||
+ | **WRONG:** | ||
+ | <file pascal> | ||
+ | var LFMOD : TGorillaFMODAudioManager; | ||
+ | LSound : IGorillaFMODSound; | ||
+ | | ||
+ | [...] | ||
+ | |||
+ | LFMOD := TGorillaFMODAudioManager.Create(nil); | ||
+ | try | ||
+ | LSound := LFMOD.LoadSoundFromFile(Common_MediaPathRaw(' | ||
+ | finally | ||
+ | FreeAndNil(LFMOD); | ||
+ | LSound := nil; | ||
+ | end; | ||
+ | </ | ||
+ | |||
+ | **CORRECT: | ||
+ | <file pascal> | ||
+ | var LFMOD : TGorillaFMODAudioManager; | ||
+ | LSound : IGorillaFMODSound; | ||
+ | | ||
+ | [...] | ||
+ | |||
+ | LFMOD := TGorillaFMODAudioManager.Create(nil); | ||
+ | try | ||
+ | LSound := LFMOD.LoadSoundFromFile(Common_MediaPathRaw(' | ||
+ | finally | ||
+ | LSound := nil; // !!! | ||
+ | FreeAndNil(LFMOD); | ||
+ | end; | ||
+ | </ |