[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