On Tue, 2016-04-05 at 15:37 +0200, Christophe Fergeau wrote: > This allows to stop using struct RedsState * rather than RedsState * in > headers which cannot include reds.h. This also allows to remove the > duplicate RedsState typedef in reds.h and reds-stream.h which is causing > issues with older gcc versions. > --- > server/char-device.h | 8 +++----- > server/main-channel.h | 4 +--- > server/red-channel.h | 14 ++++++-------- > server/red-common.h | 2 ++ > server/reds-stream.h | 2 +- > server/reds.h | 2 -- > 6 files changed, 13 insertions(+), 19 deletions(-) > > diff --git a/server/char-device.h b/server/char-device.h > index 0a4ae5d..88961cc 100644 > --- a/server/char-device.h > +++ b/server/char-device.h > @@ -119,8 +119,6 @@ void red_char_device_set_callbacks(RedCharDevice *dev, > * > * */ > > -struct RedsState; > - > /* buffer that is used for writing to the device */ > typedef struct RedCharDeviceWriteBuffer { > RingItem link; > @@ -170,7 +168,7 @@ struct RedCharDeviceCallbacks { > }; > > RedCharDevice *red_char_device_create(SpiceCharDeviceInstance *sin, > - struct RedsState *reds, > + RedsState *reds, > uint32_t client_tokens_interval, > uint32_t self_tokens, > RedCharDeviceCallbacks *cbs, > @@ -253,10 +251,10 @@ void red_char_device_write_buffer_release(RedCharDevice > *dev, > > /* api for specific char devices */ > > -RedCharDevice *spicevmc_device_connect(struct RedsState *reds, > +RedCharDevice *spicevmc_device_connect(RedsState *reds, > SpiceCharDeviceInstance *sin, > uint8_t channel_type); > -void spicevmc_device_disconnect(struct RedsState *reds, > +void spicevmc_device_disconnect(RedsState *reds, > SpiceCharDeviceInstance *char_device); > > SpiceCharDeviceInterface > *spice_char_device_get_interface(SpiceCharDeviceInstance *instance); > diff --git a/server/main-channel.h b/server/main-channel.h > index 26e2129..fd16c94 100644 > --- a/server/main-channel.h > +++ b/server/main-channel.h > @@ -32,8 +32,6 @@ > #define MAIN_CHANNEL_RECEIVE_BUF_SIZE \ > (4096 + (REDS_AGENT_WINDOW_SIZE + REDS_NUM_INTERNAL_AGENT_MESSAGES) * > SPICE_AGENT_MAX_DATA_SIZE) > > -struct RedsState; > - > struct RedsMigSpice { > char *host; > char *cert_subject; > @@ -50,7 +48,7 @@ typedef struct MainChannel { > } MainChannel; > > > -MainChannel *main_channel_new(struct RedsState *reds); > +MainChannel *main_channel_new(RedsState *reds); > RedClient *main_channel_get_client_by_link_id(MainChannel *main_chan, > uint32_t link_id); > /* This is a 'clone' from the reds.h Channel.link callback to allow passing > link_id */ > MainChannelClient *main_channel_link(MainChannel *, RedClient *client, > diff --git a/server/red-channel.h b/server/red-channel.h > index c3aeda6..94b09eb 100644 > --- a/server/red-channel.h > +++ b/server/red-channel.h > @@ -47,8 +47,6 @@ > The intention is to move towards one channel interface gradually. > At the final stage, this interface shouldn't be exposed. Only RedChannel > will use it. */ > > -struct RedsState; > - > typedef struct SpiceDataHeaderOpaque SpiceDataHeaderOpaque; > > typedef uint16_t (*get_msg_type_proc)(SpiceDataHeaderOpaque *header); > @@ -339,7 +337,7 @@ struct RedChannel { > > // TODO: when different channel_clients are in different threads from > Channel -> need to protect! > pthread_t thread_id; > - struct RedsState *reds; > + RedsState *reds; > #ifdef RED_STATISTICS > StatNodeRef stat; > uint64_t *out_bytes_counter; > @@ -362,7 +360,7 @@ struct RedChannel { > /* if one of the callbacks should cause disconnect, use red_channel_shutdown > and don't > * explicitly destroy the channel */ > RedChannel *red_channel_create(int size, > - struct RedsState *reds, > + RedsState *reds, > const SpiceCoreInterfaceInternal *core, > uint32_t type, uint32_t id, > int handle_acks, > @@ -373,7 +371,7 @@ RedChannel *red_channel_create(int size, > /* alternative constructor, meant for marshaller based (inputs,main) > channels, > * will become default eventually */ > RedChannel *red_channel_create_parser(int size, > - struct RedsState *reds, > + RedsState *reds, > const SpiceCoreInterfaceInternal *core, > uint32_t type, uint32_t id, > int handle_acks, > @@ -396,7 +394,7 @@ RedChannelClient *red_channel_client_create(int size, > RedChannel *channel, RedCl > // TODO: tmp, for channels that don't use RedChannel yet (e.g., snd channel), > but > // do use the client callbacks. So the channel clients are not connected (the > channel doesn't > // have list of them, but they do have a link to the channel, and the client > has a list of them) > -RedChannel *red_channel_create_dummy(int size, struct RedsState *reds, > uint32_t type, uint32_t id); > +RedChannel *red_channel_create_dummy(int size, RedsState *reds, uint32_t > type, uint32_t id); > RedChannelClient *red_channel_client_create_dummy(int size, > RedChannel *channel, > RedClient *client, > @@ -569,7 +567,7 @@ void red_channel_apply_clients(RedChannel *channel, > channel_client_callback v); > struct RedsState* red_channel_get_server(RedChannel *channel); > > struct RedClient { > - struct RedsState *reds; > + RedsState *reds; > RingItem link; > Ring channels; > int channels_num; > @@ -591,7 +589,7 @@ struct RedClient { > int refs; > }; > > -RedClient *red_client_new(struct RedsState *reds, int migrated); > +RedClient *red_client_new(RedsState *reds, int migrated); > > /* > * disconnects all the client's channels (should be called from the client's > thread) > diff --git a/server/red-common.h b/server/red-common.h > index 90a7d20..a9339fb 100644 > --- a/server/red-common.h > +++ b/server/red-common.h > @@ -58,4 +58,6 @@ struct SpiceCoreInterfaceInternal { > > extern SpiceCoreInterfaceInternal event_loop_core; > > +typedef struct RedsState RedsState; > + > #endif > diff --git a/server/reds-stream.h b/server/reds-stream.h > index 1123048..705d7fd 100644 > --- a/server/reds-stream.h > +++ b/server/reds-stream.h > @@ -20,6 +20,7 @@ > > #include "spice.h" > #include "common/mem.h" > +#include "red-common.h" > > #include <stdbool.h> > > @@ -28,7 +29,6 @@ > typedef void (*AsyncReadDone)(void *opaque); > typedef void (*AsyncReadError)(void *opaque, int err); > > -typedef struct RedsState RedsState; > typedef struct RedsStream RedsStream; > typedef struct RedsStreamPrivate RedsStreamPrivate; > > diff --git a/server/reds.h b/server/reds.h > index 83618e9..2cfd451 100644 > --- a/server/reds.h > +++ b/server/reds.h > @@ -32,8 +32,6 @@ > #include "main-dispatcher.h" > #include "migration-protocol.h" > > -typedef struct RedsState RedsState; > - > static inline QXLInterface * qxl_get_interface(QXLInstance *qxl) > { > return SPICE_CONTAINEROF(qxl->base.sif, QXLInterface, base); Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel