rem: TRACE(("B_MULTI_GET_EVENT_INFO\n"));
add: LOG(("B_MULTI_GET_EVENT_INFO\n"));
context: status_t multi_control(void *cookie, uint32 op, void *data, size_t length){    switch (op) {		case B_MULTI_GET_DESCRIPTION: 			TRACE(("B_MULTI_GET_DESCRIPTION\n"));			return get_description((multi_description *)data);		case B_MULTI_GET_EVENT_INFO:			TRACE(("B_MULTI_GET_EVENT_INFO\n"));			return B_ERROR;		case B_MULTI_SET_EVENT_INFO:			TRACE(("B_MULTI_SET_EVENT_INFO\n"));			return B_ERROR;		case B_MULTI_GET_EVENT:			TRACE(("B_MULTI_GET_EVENT\n"));			return B_ERROR;		case B_MULTI_GET_ENABLED_CHANNELS:			TRACE(("B_MULTI_GET_ENABLED_CHANNELS\n"));			return get_enabled_channels((multi_channel_enable *)data);		case B_MULTI_SET_ENABLED_CHANNELS:			TRACE(("B_MULTI_SET_ENABLED_CHANNELS\n"));			return B_OK; break;		case B_MULTI_GET_GLOBAL_FORMAT:			TRACE(("B_MULTI_GET_GLOBAL_FORMAT\n"));			return get_global_format((multi_format_info *)data);		case B_MULTI_SET_GLOBAL_FORMAT:			TRACE(("B_MULTI_SET_GLOBAL_FORMAT\n"));			return B_OK; /* XXX BUG! we *MUST* return B_OK, returning B_ERROR will prevent 						  * BeOS to accept the format returned in B_MULTI_GET_GLOBAL_FORMAT						  */		case B_MULTI_GET_CHANNEL_FORMATS:			TRACE(("B_MULTI_GET_CHANNEL_FORMATS\n"));			return B_ERROR;		case B_MULTI_SET_CHANNEL_FORMATS:	/* only implemented if possible */			TRACE(("B_MULTI_SET_CHANNEL_FORMATS\n"));			return B_ERROR;		case B_MULTI_GET_MIX:			TRACE(("B_MULTI_GET_MIX\n"));			return B_ERROR;		case B_MULTI_SET_MIX:			TRACE(("B_MULTI_SET_MIX\n"));			return B_ERROR;		case B_MULTI_LIST_MIX_CHANNELS:			TRACE(("B_MULTI_LIST_MIX_CHANNELS\n"));			return list_mix_channels((multi_mix_channel_info *)data);		case B_MULTI_LIST_MIX_CONTROLS:			TRACE(("B_MULTI_LIST_MIX_CONTROLS\n"));			return list_mix_controls((multi_mix_control_info *)data);		case B_MULTI_LIST_MIX_CONNECTIONS:			TRACE(("B_MULTI_LIST_MIX_CONNECTIONS\n"));			return list_mix_connections((multi_mix_connection_info *)data);		case B_MULTI_GET_BUFFERS:			/* Fill out the struct for the first time; doesn't start anything. */			TRACE(("B_MULTI_GET_BUFFERS\n"));			return get_buffers(data);		case B_MULTI_SET_BUFFERS:			/* Set what buffers to use, if the driver supports soft buffers. */			TRACE(("B_MULTI_SET_BUFFERS\n"));			return B_ERROR; /* we do not support soft buffers */		case B_MULTI_SET_START_TIME:			/* When to actually start */			TRACE(("B_MULTI_SET_START_TIME\n"));			return B_ERROR;		case B_MULTI_BUFFER_EXCHANGE:		/* stop and go are derived from this being called *///			dprintf("B_MULTI_BUFFER_EXCHANGE\n");			return buffer_exchange((multi_buffer_info *)data);		case B_MULTI_BUFFER_FORCE_STOP:		/* force stop of playback */			TRACE(("B_MULTI_BUFFER_FORCE_STOP\n"));			return buffer_force_stop();	}	TRACE(("ERROR: unknown multi_control %#x\n",op));	return B_ERROR;}