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
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss