/* call-seq:
* jump( time ) -> self
*
* Jump to a certain time in the music.
* Only works when music is playing or paused (but not stopped).
* Only works for OGG and MP3 files.
*
* Raises SDLError if something goes wrong, or if the music type does not
* support setting the position.
*
* time:: Time to jump to, in seconds from the beginning.
*
*/
VALUE rbgm_mixmusic_jump(VALUE self, VALUE vtime)
{
double time = NUM2DBL(vtime);
switch( Mix_GetMusicType(NULL) )
{
case MUS_OGG:
case MUS_MP3:
Mix_RewindMusic(); // Needed for MP3, and OK with OGG
int result = Mix_SetMusicPosition(time);
if( result < 0 )
{
rb_raise(eSDLError, "Error jumping to time in music: %s", Mix_GetError());
}
return self;
case MUS_NONE:
rb_raise(eSDLError, "Cannot jump when no music is playing.");
default:
rb_raise(eSDLError, "Music type does not support jumping.");
}
}