$NetBSD: patch-af,v 1.1 2007/01/12 20:32:48 wiz Exp $

--- src/sound/flac.c.orig	2004-06-25 23:22:33.000000000 +0000
+++ src/sound/flac.c
@@ -47,6 +47,13 @@
 #include "iolib.h"
 #include "sound_server.h"
 
+/* FLAC 1.1.3 has FLAC_API_VERSION_CURRENT == 8 */
+#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8
+#define LEGACY_FLAC
+#else
+#undef LEGACY_FLAC
+#endif
+
 /*----------------------------------------------------------------------------
 --  Declaration
 ----------------------------------------------------------------------------*/
@@ -88,7 +95,12 @@ static void FLAC_error_callback(const FL
 */
 static FLAC__StreamDecoderReadStatus FLAC_read_callback(
 	const FLAC__StreamDecoder* stream, FLAC__byte buffer[],
-	unsigned int* bytes, void* user)
+#ifdef LEGACY_FLAC
+	unsigned int* bytes,
+#else
+	size_t* bytes,
+#endif
+	void* user)
 {
 	Sample* sample;
 	FlacData* data;
@@ -339,12 +351,21 @@ Sample* LoadFlac(const char* name, int f
 	sample->Pos = 0;
 	sample->User = data;
 
+#ifdef LEGACY_FLAC
 	FLAC__stream_decoder_set_read_callback(stream, FLAC_read_callback);
 	FLAC__stream_decoder_set_write_callback(stream, FLAC_write_callback);
 	FLAC__stream_decoder_set_metadata_callback(stream, FLAC_metadata_callback);
 	FLAC__stream_decoder_set_error_callback(stream, FLAC_error_callback);
 	FLAC__stream_decoder_set_client_data(stream, sample);
 	FLAC__stream_decoder_init(stream);
+#else
+	if(FLAC__stream_decoder_init_stream(stream, FLAC_read_callback, NULL, NULL, NULL, NULL, FLAC_write_callback, FLAC_metadata_callback, FLAC_error_callback, sample) != FLAC__STREAM_DECODER_INIT_STATUS_OK) {
+		FLAC__stream_decoder_delete(stream);
+		free(data);
+		free(sample);
+		return NULL;
+	}
+#endif
 
 	if (flags & PlayAudioStream) {
 		sample->Buffer = malloc(SOUND_BUFFER_SIZE);
