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