[Spice-devel] [spice-server] Remove duplicate typedef
Jonathon Jongsma
jjongsma at redhat.com
Wed May 25 14:18:31 UTC 2016
Not terrible, but I think if we did use this approach there should be a
prominent comment in red-types.h explaining why this seemingly-arbitrary set of
types are defined there.
On Wed, 2016-05-25 at 11:43 +0200, Christophe Fergeau wrote:
> This fixes compilation on el6. This is achieved by moving the most problematic
> typedef to a red-types.h header. Ideally, it will go away once we have put
> some
> order in the header content/API/... For example, StreamAgent would be better
> as
> an opaque type.
> ---
>
> Here is my take on this.
>
> Christophe
>
> server/Makefile.am | 1 +
> server/image-cache.h | 4 +---
> server/main-channel-client.h | 7 ++-----
> server/main-channel.c | 1 +
> server/main-channel.h | 2 +-
> server/red-channel.h | 2 +-
> server/red-types.h | 26 ++++++++++++++++++++++++++
> server/red-worker.c | 2 +-
> server/reds.c | 1 +
> server/sound.c | 1 +
> server/stream.c | 3 ++-
> server/stream.h | 3 ---
> 12 files changed, 38 insertions(+), 15 deletions(-)
> create mode 100644 server/red-types.h
>
> diff --git a/server/Makefile.am b/server/Makefile.am
> index cca3b9b..708940d 100644
> --- a/server/Makefile.am
> +++ b/server/Makefile.am
> @@ -148,6 +148,7 @@ libserver_la_SOURCES = \
> display-limits.h \
> dcc-encoders.c \
> dcc-encoders.h \
> + red-types.h \
> $(NULL)
>
> if HAVE_SMARTCARD
> diff --git a/server/image-cache.h b/server/image-cache.h
> index 38a318e..fffd82d 100644
> --- a/server/image-cache.h
> +++ b/server/image-cache.h
> @@ -23,9 +23,7 @@
> #include <common/canvas_base.h>
> #include <common/ring.h>
>
> -/* FIXME: move back to display-channel.h (once structs are private) */
> -typedef struct Drawable Drawable;
> -typedef struct DisplayChannelClient DisplayChannelClient;
> +#include "red-types.h"
>
> typedef struct ImageCacheItem {
> RingItem lru_link;
> diff --git a/server/main-channel-client.h b/server/main-channel-client.h
> index c74f847..6ce3f34 100644
> --- a/server/main-channel-client.h
> +++ b/server/main-channel-client.h
> @@ -17,11 +17,8 @@
> #ifndef __MAIN_CHANNEL_CLIENT_H__
> #define __MAIN_CHANNEL_CLIENT_H__
>
> -#include "red-channel.h"
> -
> -/* FIXME: remove extra MainChannel typedef when possible */
> -typedef struct MainChannel MainChannel;
> -typedef struct MainChannelClient MainChannelClient;
> +#include "main-channel.h"
> +#include "red-types.h"
>
> MainChannelClient *main_channel_client_create(MainChannel *main_chan,
> RedClient *client,
> RedsStream *stream, uint32_t
> connection_id,
> diff --git a/server/main-channel.c b/server/main-channel.c
> index 1a18200..daa6b5d 100644
> --- a/server/main-channel.c
> +++ b/server/main-channel.c
> @@ -23,6 +23,7 @@
>
> #include "red-common.h"
> #include "main-channel.h"
> +#include "main-channel-client.h"
> #include "reds.h"
>
> int main_channel_is_connected(MainChannel *main_chan)
> diff --git a/server/main-channel.h b/server/main-channel.h
> index 868a14a..d4b63f6 100644
> --- a/server/main-channel.h
> +++ b/server/main-channel.h
> @@ -23,7 +23,7 @@
> #include <common/marshaller.h>
>
> #include "red-channel.h"
> -#include "main-channel-client.h"
> +#include "red-types.h"
>
> // TODO: Defines used to calculate receive buffer size, and also by reds.c
> // other options: is to make a reds_main_consts.h, to duplicate defines.
> diff --git a/server/red-channel.h b/server/red-channel.h
> index 57ea660..c71927a 100644
> --- a/server/red-channel.h
> +++ b/server/red-channel.h
> @@ -33,6 +33,7 @@
> #include "reds-stream.h"
> #include "stat.h"
> #include "red-pipe-item.h"
> +#include "red-types.h"
>
> #define MAX_SEND_BUFS 1000
> #define CLIENT_ACK_WINDOW 20
> @@ -131,7 +132,6 @@ typedef struct OutgoingHandler {
> typedef struct RedChannel RedChannel;
> typedef struct RedChannelClient RedChannelClient;
> typedef struct RedClient RedClient;
> -typedef struct MainChannelClient MainChannelClient;
>
> /* Messages handled by red_channel
> * SET_ACK - sent to client on channel connection
> diff --git a/server/red-types.h b/server/red-types.h
> new file mode 100644
> index 0000000..a920074
> --- /dev/null
> +++ b/server/red-types.h
> @@ -0,0 +1,26 @@
> +/*
> + Copyright (C) 2016 Red Hat, Inc.
> +
> + This library is free software; you can redistribute it and/or
> + modify it under the terms of the GNU Lesser General Public
> + License as published by the Free Software Foundation; either
> + version 2.1 of the License, or (at your option) any later version.
> +
> + This library is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + Lesser General Public License for more details.
> +
> + You should have received a copy of the GNU Lesser General Public
> + License along with this library; if not, see <http://www.gnu.org/licenses/
> >.
> +*/
> +
> +#ifndef _H_RED_TYPES
> +#define _H_RED_TYPES
> +
> +typedef struct MainChannelClient MainChannelClient;
> +typedef struct DisplayChannelClient DisplayChannelClient;
> +typedef struct DisplayChannel DisplayChannel;
> +typedef struct Drawable Drawable;
> +
> +#endif
> diff --git a/server/red-worker.c b/server/red-worker.c
> index 0c945c1..63c0d00 100644
> --- a/server/red-worker.c
> +++ b/server/red-worker.c
> @@ -45,8 +45,8 @@
> #include <common/ring.h>
>
> #include "display-channel.h"
> +#include "main-channel-client.h"
> #include "stream.h"
> -
> #include "spice.h"
> #include "red-worker.h"
> #include "cursor-channel.h"
> diff --git a/server/reds.c b/server/reds.c
> index 5c0f9b6..ff51598 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -57,6 +57,7 @@
> #include "agent-msg-filter.h"
> #include "inputs-channel.h"
> #include "main-channel.h"
> +#include "main-channel-client.h"
> #include "red-qxl.h"
> #include "main-dispatcher.h"
> #include "sound.h"
> diff --git a/server/sound.c b/server/sound.c
> index 8335101..3e6eec4 100644
> --- a/server/sound.c
> +++ b/server/sound.c
> @@ -32,6 +32,7 @@
> #include "spice.h"
> #include "red-common.h"
> #include "main-channel.h"
> +#include "main-channel-client.h"
> #include "reds.h"
> #include "red-qxl.h"
> #include "sound.h"
> diff --git a/server/stream.c b/server/stream.c
> index 2aa13d1..3cf50ed 100644
> --- a/server/stream.c
> +++ b/server/stream.c
> @@ -18,8 +18,9 @@
> #include <config.h>
> #endif
>
> -#include "stream.h"
> #include "display-channel.h"
> +#include "main-channel-client.h"
> +#include "stream.h"
>
> #define FPS_TEST_INTERVAL 1
> #define FOREACH_STREAMS(display, item) \
> diff --git a/server/stream.h b/server/stream.h
> index 715f920..80dc60f 100644
> --- a/server/stream.h
> +++ b/server/stream.h
> @@ -42,9 +42,6 @@
> #define RED_STREAM_DEFAULT_LOW_START_BIT_RATE (2.5 * 1024 * 1024) // 2.5Mbps
> #define MAX_FPS 30
>
> -/* move back to display_channel once struct private */
> -typedef struct DisplayChannel DisplayChannel;
> -
> typedef struct Stream Stream;
>
> typedef struct RedStreamActivateReportItem {
More information about the Spice-devel
mailing list