/*
 *  call-seq:
 *    stop  ->  self
 *
 *  Stop the Sound. Unlike #pause, the sound must be played again from
 *  the beginning, it cannot be resumed from it was stopped.
 *
 *  Returns::     The receiver (self).
 *
 *  **NOTE**: Does nothing if the sound is not currently playing or paused.
 *
 */
static VALUE rg_sound_stop( VALUE self )
{
        RG_Sound *sound;
        Data_Get_Struct(self,  RG_Sound, sound);

        int channel = sound->channel;

        /* Make sure the sound actually belongs to the channel */
        if( _rg_sound_channel_check(sound) )
        {
                Mix_HaltChannel( channel );
        }

        return self;
}