(note: and add in "if (channel == -1) {}" bloc this :

Mix_FreeChunk(sample);

Progs)

On Sat, 29 Jul 2006 12:17:17 +0200
Romain Bignon <[EMAIL PROTECTED]> wrote:

> Hi,
> 
> I would make a little correction in my patch :
> 
> In jukebox.cpp:
> 
> > +  chunks[channel] = sample;
> > +
> >    if (channel == -1) {
> >         MSG_DEBUG("jukebox", "Error: Jukebox::PlaySample: %s", 
> > Mix_GetError());
> >    }
> 
> It might be changed to :
> >    if (channel == -1) {
> >         MSG_DEBUG("jukebox", "Error: Jukebox::PlaySample: %s", 
> > Mix_GetError());
> >    }
> > +  else
> > +       chunkds[channel] = sample;
> 
> I don't think this causes a crash or a bug, but this is more correct.
> 
> Progs
> 
> It might be call only
> 
> On Fri, 28 Jul 2006 16:14:21 +0200
> Romain Bignon <[EMAIL PROTECTED]> wrote:
> 
> > Hello,
> > 
> > I was reading sound/jukebox.cpp when I saw there were not any call for 
> > Mix_FreeChunk()...
> > 
> > I made a patch to erase this problem, but I think jukebox.cpp is really 
> > badly programmed, and someone might remake this.
> > 
> > Regards,
> > 
> > Progs
> > 
> > Index: jukebox.cpp
> > ===================================================================
> > --- jukebox.cpp (révision 936)
> > +++ jukebox.cpp (copie de travail)
> > @@ -80,6 +80,8 @@
> >      std::cout << "Opened audio at " << m_config.frequency <<" Hz "<< 
> > (audio_format&0xFF)
> >               <<" bit " << std::endl;
> >    }
> > +  Mix_ChannelFinished(JukeBox::EndChunk); /* JukeBox::EndChunk() will be 
> > called when any sound is finished */
> > +
> >    m_init = true;
> > 
> >    LoadXML("share");
> > @@ -235,9 +237,20 @@
> > 
> >    int channel = Mix_PlayChannel(-1, sample, loop);
> > 
> > +  chunks[channel] = sample;
> > +
> >    if (channel == -1) {
> >         MSG_DEBUG("jukebox", "Error: Jukebox::PlaySample: %s", 
> > Mix_GetError());
> >    }
> >    return channel;
> >  }
> > 
> > +void JukeBox::EndChunk(int channel)
> > +{
> > +       Mix_Chunk* chk = jukebox.chunks[channel];
> > +
> > +       if(!chk) return;
> > +
> > +       Mix_FreeChunk(chk);
> > +       jukebox.chunks[channel] = 0;
> > +}
> > Index: jukebox.h
> > ===================================================================
> > --- jukebox.h   (révision 936)
> > +++ jukebox.h   (copie de travail)
> > @@ -42,6 +42,8 @@
> > 
> >    std::multimap<std::string, std::string> m_soundsamples;
> > 
> > +  std::map<int, Mix_Chunk*> chunks;
> > +
> >    struct s_m_config{
> >      bool music;
> >      bool effects;
> > @@ -53,6 +55,8 @@
> > 
> >    std::set<std::string> m_profiles_loaded;
> > 
> > +  static void EndChunk(int channel);
> > +
> >  public:
> >    JukeBox();
> >    void Init();
> > 
> > _______________________________________________
> > Wormux-dev mailing list
> > [email protected]
> > https://mail.gna.org/listinfo/wormux-dev
> > 
> 
> _______________________________________________
> Wormux-dev mailing list
> [email protected]
> https://mail.gna.org/listinfo/wormux-dev
> 

_______________________________________________
Wormux-dev mailing list
[email protected]
https://mail.gna.org/listinfo/wormux-dev

Répondre à