[pulseaudio-discuss] [PATCH 4/4] Profiles can have sink and source ports, and announce that through the API.
David Henningsson
david.henningsson at canonical.com
Mon Aug 8 02:31:39 PDT 2011
On 2011-07-07 13:23, David Henningsson wrote:
> diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h
> index 8e4cc97..259c57b 100644
> --- a/src/pulse/introspect.h
> +++ b/src/pulse/introspect.h
> @@ -452,6 +452,10 @@ typedef struct pa_card_profile_info {
> uint32_t n_sinks; /**< Number of sinks this profile would create */
> uint32_t n_sources; /**< Number of sources this profile would create */
> uint32_t priority; /**< The higher this value is the more useful this profile is as a default */
> + uint32_t n_sink_ports; /**< Number of entries in sink_ports array \since MERGE_OF_JACK_DETECTION */
> + pa_sink_port_info** sink_ports; /**< Array of available output ports, or NULL. Array is terminated by an entry set to NULL. The number of entries is stored in n_sink_ports. \since MERGE_OF_JACK_DETECTION */
> + uint32_t n_source_ports; /**< Number of entries in source_ports array \since MERGE_OF_JACK_DETECTION */
> + pa_source_port_info** source_ports; /**< Array of available input ports, or NULL. Array is terminated by an entry set to NULL. The number of entries is stored in n_source_ports. \since MERGE_OF_JACK_DETECTION */
> } pa_card_profile_info;
I think I figured out why the addition above breaks the ABI: It's
because pa_card_info has a pointer to an array of these objects, with
the following comment:
pa_card_profile_info* profiles; /**< Array of available profile, or
NULL. Array is terminated by an entry with name set to NULL. Number of
entries is stored in n_profiles */
Which means the client has to rely on sizeof(pa_card_profile_info) to
know the address of the second (and third, and so on) array entry. As
sizeof(pa_card_profile_info) is changed, recompilation of clients is
necessary.
:-(
Any good ideas as of how to avoid it?
--
David Henningsson
http://launchpad.net/~diwic
More information about the pulseaudio-discuss
mailing list