rem: mixSDL_Buffer *buf;  if (src->state >= MIX_PLAYING) mixSDL_SourceDeactivate (src);  mixSDL_LockMutex (buf_mutex);  for (buf = src->firstqueued; buf && buf->state != MIX_BUF_QUEUED; buf = buf->next) { buf->state = MIX_BUF_QUEUED; }  mixSDL_UnlockMutex (buf_mutex);  src->curbufofs = 0; src->cprocessed = 0; src->state = MIX_INITIAL;
add: mixSDL_SourceRewind_internal (src);
context: mixSDL_SourceRewind (mixSDL_Object srcobj){	mixSDL_Source *src = (mixSDL_Source *) srcobj;	if (!src)	{		mixSDL_SetError (MIX_INVALID_NAME);#ifdef DEBUG		fprintf (stderr, "mixSDL_SourceRewind() called with null source\n");#endif		return;	}	mixSDL_LockMutex (src_mutex);	if (src->magic != mixSDL_srcMagic)	{		mixSDL_SetError (MIX_INVALID_NAME);#ifdef DEBUG		fprintf (stderr, "mixSDL_SourcePlay(): not a source\n");#endif	}	else	{		/* should change the processed buffers to queued */		mixSDL_Buffer *buf;		if (src->state >= MIX_PLAYING)			mixSDL_SourceDeactivate (src);		mixSDL_LockMutex (buf_mutex);		for (buf = src->firstqueued;				buf && buf->state != MIX_BUF_QUEUED;				buf = buf->next)		{			buf->state = MIX_BUF_QUEUED;		}		mixSDL_UnlockMutex (buf_mutex);		src->curbufofs = 0;		src->cprocessed = 0;		src->state = MIX_INITIAL;	}	mixSDL_UnlockMutex (src_mutex);}