On Sat, May 9, 2009 at 1:39 AM, Lennart Poettering <lennart at poettering.net> wrote: > On Fri, 08.05.09 00:45, Marc-Andr? Lureau (marcandre.lureau at gmail.com) wrote: > >> From: Marc-Andr? Lureau <marc-andre.lureau at nokia.com> >> >> While trying to keep ABI compatibility, I introduce a bitfield for the >> boolean volume_is_absolute. We can't extend the struct because the >> API is using pa_ext_stream_restore_info data[] directly.. > > Looks mostly good. > >> @@ -24,6 +24,7 @@ >> >> ?#include <pulse/context.h> >> ?#include <pulse/version.h> >> +#include <pulsecore/macro.h> > > No! pulsecore is private API. pulse/ext-stream-restore.h is public > API. We cannot include this here! > >> >> ?/** \file >> ? * >> @@ -39,7 +40,8 @@ typedef struct pa_ext_stream_restore_info { >> ? ? ?pa_channel_map channel_map; ?/**< The channel map for the volume field, if applicable */ >> ? ? ?pa_cvolume volume; ? ? ? ? ? /**< The volume of the stream when it was seen last, if applicable and saved */ >> ? ? ?const char *device; ? ? ? ? ?/**< The sink/source of the stream when it was last seen, if applicable and saved */ >> - ? ?int mute; ? ? ? ? ? ? ? ? ? ?/**< The boolean mute state of the stream when it was last seen, if applicable and saved */ >> + ? ?int mute:1; ? ? ? ? ? ? ? ? ?/**< The boolean mute state of the stream when it was last seen, if applicable and saved */ >> + ? ?pa_bool_t volume_is_absolute:1; /**< True if the volume is absolute, if applicable and saved. ?\since 0.9.16 */ >> ?} pa_ext_stream_restore_info; > > pa_bool_t is used internally only. In the public API we only expose > ints. pa_bool_t is defined as _Bool on C99 and int on other > compilers. This discrepancy should not be visible to outside due to > ABI stability issues. Minor comment; if you include stdbool.h you can use 'bool' which IMHO is less ugly than _Bool. And I wonder what's the point of pa_bool_t... if the compiler doesn't have stdbool.h, then just define 'bool' as you would define pa_bool_t. -- Felipe Contreras