File 0015-Fix-the-binary-compatibility-of-ext-ctl-plugin-with-.patch of Package alsa

From 52160de21ee6a710a746b0881d9581994d039123 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Mon, 25 Jun 2012 23:16:14 +0200
Subject: [PATCH] Fix the binary compatibility of ext-ctl plugin with protocol
 1.0.0

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 include/control_external.h |    9 +++++----
 src/control/control_ext.c  |    3 ++-
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/include/control_external.h b/include/control_external.h
index 5392ea6..e98f4d6 100644
--- a/include/control_external.h
+++ b/include/control_external.h
@@ -125,16 +125,17 @@ struct snd_ctl_ext {
 	 * control handle filled by #snd_ctl_ext_create()
 	 */
 	snd_ctl_t *handle;
+
+	int nonblock;			/**< non-block mode; read-only */
+	int subscribed;			/**< events subscribed; read-only */
+
 	/**
-	 * optional TLV data for the control.
+	 * optional TLV data for the control (since protocol 1.0.1)
 	 */
 	union {
 		snd_ctl_ext_tlv_rw_t *c;
 		const unsigned int *p;
 	} tlv;
-
-	int nonblock;			/**< non-block mode; read-only */
-	int subscribed;			/**< events subscribed; read-only */
 };
 
 /** Callback table of ext */
diff --git a/src/control/control_ext.c b/src/control/control_ext.c
index cc30766..56552fa 100644
--- a/src/control/control_ext.c
+++ b/src/control/control_ext.c
@@ -706,7 +706,8 @@ int snd_ctl_ext_create(snd_ctl_ext_t *ext, const char *name, int mode)
 	snd_ctl_t *ctl;
 	int err;
 
-	if (ext->version != SND_CTL_EXT_VERSION) {
+	if (ext->version < SNDRV_PROTOCOL_VERSION(1, 0, 0) ||
+	    ext->version > SND_CTL_EXT_VERSION) {
 		SNDERR("ctl_ext: Plugin version mismatch\n");
 		return -ENXIO;
 	}
-- 
1.7.10.4

openSUSE Build Service is sponsored by