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); -- 2.5.5 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel