rem: mixSDL_mix_lowq (stream, len);
add: mixSDL_mix_lowq (userdata, stream, len);
context: mixSDL_mix_channels (void *userdata, uint8 *stream, sint32 len){	uint32 samples = len / mixer_chansize;	sint32 *end_data = mixer_data + samples;	sint32 *data;	uint32 step;	/* mixer_datasize < samples should not happen ever, but for now.. */	if (mixer_datasize < samples)	{#ifdef DEBUG		fprintf (stderr, "mixSDL_mix_channels(): "				"WARNING: work-buffer too small\n");#endif		mixSDL_mix_lowq (stream, len);	}	/* keep this order or die */	mixSDL_LockMutex (src_mutex);	mixSDL_LockMutex (buf_mutex);	mixSDL_LockMutex (act_mutex);	/* first, collect data from sources and put into work-buffer */	for (data = mixer_data; data < end_data; ++data)	{		uint32 i;		sint32 fullsamp;				fullsamp = 0;		for (i = 0; i < MAX_SOURCES; i++)		{			mixSDL_Source *src;			sint32 samp;						/* find next source */			for (; i < MAX_SOURCES && (					(src = active_sources[i]) == 0					|| src->state != MIX_PLAYING					|| !mixSDL_SourceGetNextSample (src, &samp));					i++)				;			if (i < MAX_SOURCES)			{				/* sample aquired */				fullsamp += samp;			}		}				*data = fullsamp;	}	/* unclip work-buffer */	step = mixer_spec.channels;	mixSDL_UnclipWorkBuffer (mixer_data, end_data, step);	if (step == 2)	{	/* also, for the second channel */		mixSDL_UnclipWorkBuffer (mixer_data + 1, end_data, step);	}	/* copy data into driver buffer */	for (data = mixer_data; data < end_data; ++data)	{		mixSDL_PutSampleExt (stream, mixer_chansize, *data);		stream += mixer_chansize;	}	/* keep this order or die */	mixSDL_UnlockMutex (act_mutex);	mixSDL_UnlockMutex (buf_mutex);	mixSDL_UnlockMutex (src_mutex);	(void)userdata; // satisfying compiler}