[Spice-devel] [PATCH 2/2] EXP: try to minimize header dependencies

Frediano Ziglio fziglio at redhat.com
Tue May 10 13:23:05 UTC 2016


Different headers changes:
- every header must be auto sufficient;
- include an header only if definitions are necessary
  (ie: don't include just to use some structure pointers).

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/agent-msg-filter.h       |  9 ++++++---
 server/cache-item.h             |  3 +--
 server/char-device.h            |  3 +--
 server/cursor-channel.h         |  3 ---
 server/dcc-encoders.h           | 41 +++++++++++++++++++++++------------------
 server/dcc-send.c               |  8 +++++---
 server/dcc.c                    |  2 ++
 server/dcc.h                    | 10 ++++++----
 server/demarshallers.h          |  3 +++
 server/dispatcher.c             |  2 ++
 server/dispatcher.h             |  3 +--
 server/display-channel.c        |  3 +++
 server/display-channel.h        | 24 ++----------------------
 server/glz-encoder-priv.h       |  5 ++++-
 server/glz-encoder.h            |  1 -
 server/inputs-channel.h         |  2 ++
 server/main-dispatcher.h        |  1 -
 server/memslot.c                |  3 +--
 server/memslot.h                |  2 --
 server/migration-protocol.h     |  1 +
 server/pixmap-cache.c           |  1 +
 server/pixmap-cache.h           | 10 +++++++---
 server/red-channel.h            |  4 +---
 server/red-parse-qxl.h          |  8 +++++---
 server/red-pipe-item.h          |  1 +
 server/red-qxl.h                |  1 -
 server/red-record-qxl.h         |  7 ++++---
 server/red-replay-qxl.h         |  2 +-
 server/red-worker.c             |  3 +++
 server/red-worker.h             |  3 +--
 server/reds-private.h           |  5 +++++
 server/reds-stream.h            |  3 ---
 server/reds.h                   |  3 +--
 server/smartcard.h              |  2 ++
 server/sound.h                  |  6 ++++--
 server/spice-bitmap-utils.h     |  5 ++++-
 server/stat.h                   |  2 ++
 server/stream.c                 |  2 ++
 server/stream.h                 |  1 -
 server/tests/replay.c           |  1 +
 server/tests/test-qxl-parsing.c |  1 +
 server/tree.h                   |  3 +--
 server/utils.h                  |  3 ++-
 server/video-encoder.h          |  3 +++
 server/zlib-encoder.h           |  2 ++
 45 files changed, 117 insertions(+), 94 deletions(-)

diff --git a/server/agent-msg-filter.h b/server/agent-msg-filter.h
index 836ddbd..e7eef1a 100644
--- a/server/agent-msg-filter.h
+++ b/server/agent-msg-filter.h
@@ -21,6 +21,9 @@
 #ifndef _H_AGENT_MSG_FILTER
 #define _H_AGENT_MSG_FILTER
 
+#include <inttypes.h>
+#include <glib.h>
+
 /* Possible return values for agent_msg_filter_process_data */
 enum {
     AGENT_MSG_FILTER_OK,
@@ -39,14 +42,14 @@ typedef struct AgentMsgFilter {
     gboolean discard_all;
 } AgentMsgFilter;
 
-void agent_msg_filter_init(struct AgentMsgFilter *filter,
+void agent_msg_filter_init(AgentMsgFilter *filter,
                            gboolean copy_paste, gboolean file_xfer,
                            gboolean use_client_monitors_config,
                            gboolean discard_all);
-void agent_msg_filter_config(struct AgentMsgFilter *filter,
+void agent_msg_filter_config(AgentMsgFilter *filter,
                              gboolean copy_paste, gboolean file_xfer,
                              gboolean use_client_monitors_config);
-int agent_msg_filter_process_data(struct AgentMsgFilter *filter,
+int agent_msg_filter_process_data(AgentMsgFilter *filter,
                                   uint8_t *data, uint32_t len);
 
 #endif
diff --git a/server/cache-item.h b/server/cache-item.h
index d14e9a3..f13a69a 100644
--- a/server/cache-item.h
+++ b/server/cache-item.h
@@ -19,8 +19,7 @@
 # define CACHE_ITEM_H_
 
 #include <common/ring.h>
-
-#include "red-channel.h"
+#include "red-pipe-item.h"
 
 typedef struct RedCacheItem RedCacheItem;
 
diff --git a/server/char-device.h b/server/char-device.h
index 3ac28fd..2f8048a 100644
--- a/server/char-device.h
+++ b/server/char-device.h
@@ -20,9 +20,8 @@
 
 #include <glib-object.h>
 
-#include "spice.h"
-#include "red-channel.h"
 #include "migration-protocol.h"
+#include "red-channel.h"
 
 #define RED_TYPE_CHAR_DEVICE red_char_device_get_type()
 
diff --git a/server/cursor-channel.h b/server/cursor-channel.h
index 4dad4b6..3b56824 100644
--- a/server/cursor-channel.h
+++ b/server/cursor-channel.h
@@ -18,10 +18,7 @@
 #ifndef CURSOR_CHANNEL_H_
 # define CURSOR_CHANNEL_H_
 
-#include "spice.h"
-#include "reds.h"
 #include "red-worker.h"
-#include "red-parse-qxl.h"
 
 typedef struct CursorChannel CursorChannel;
 typedef struct CursorChannelClient CursorChannelClient;
diff --git a/server/dcc-encoders.h b/server/dcc-encoders.h
index 84f9f93..5f2f519 100644
--- a/server/dcc-encoders.h
+++ b/server/dcc-encoders.h
@@ -19,12 +19,13 @@
 #define DCC_ENCODERS_H_
 
 #include <setjmp.h>
+
 #include <common/marshaller.h>
 #include <common/quic.h>
+#include <common/lz.h>
+#include <common/ring.h>
 
-#include "red-channel.h"
 #include "red-parse-qxl.h"
-#include "image-cache.h"
 #include "glz-encoder.h"
 #include "jpeg-encoder.h"
 #ifdef USE_LZ4
@@ -32,21 +33,25 @@
 #endif
 #include "zlib-encoder.h"
 
+struct RedClient;
+struct Drawable;
+struct DisplayChannelClient;
+
 typedef struct RedCompressBuf RedCompressBuf;
 typedef struct GlzDrawableInstanceItem GlzDrawableInstanceItem;
 typedef struct RedGlzDrawable RedGlzDrawable;
 
-void             dcc_encoders_init                           (DisplayChannelClient *dcc);
-void             dcc_encoders_free                           (DisplayChannelClient *dcc);
-void             dcc_free_glz_drawable_instance              (DisplayChannelClient *dcc,
+void             dcc_encoders_init                           (struct DisplayChannelClient *dcc);
+void             dcc_encoders_free                           (struct DisplayChannelClient *dcc);
+void             dcc_free_glz_drawable_instance              (struct DisplayChannelClient *dcc,
                                                               GlzDrawableInstanceItem *item);
-void             dcc_free_glz_drawable                       (DisplayChannelClient *dcc,
+void             dcc_free_glz_drawable                       (struct DisplayChannelClient *dcc,
                                                               RedGlzDrawable *drawable);
-int              dcc_free_some_independent_glz_drawables     (DisplayChannelClient *dcc);
-void             dcc_free_glz_drawables                      (DisplayChannelClient *dcc);
-void             dcc_free_glz_drawables_to_free              (DisplayChannelClient* dcc);
-void             dcc_freeze_glz                              (DisplayChannelClient *dcc);
-void             dcc_release_glz                             (DisplayChannelClient *dcc);
+int              dcc_free_some_independent_glz_drawables     (struct DisplayChannelClient *dcc);
+void             dcc_free_glz_drawables                      (struct DisplayChannelClient *dcc);
+void             dcc_free_glz_drawables_to_free              (struct DisplayChannelClient* dcc);
+void             dcc_freeze_glz                              (struct DisplayChannelClient *dcc);
+void             dcc_release_glz                             (struct DisplayChannelClient *dcc);
 
 void             marshaller_add_compressed                   (SpiceMarshaller *m,
                                                               RedCompressBuf *comp_buf,
@@ -72,17 +77,17 @@ typedef struct GlzSharedDictionary {
     uint8_t id;
     pthread_rwlock_t encode_lock;
     int migrate_freeze;
-    RedClient *client; // channel clients of the same client share the dict
+    struct RedClient *client; // channel clients of the same client share the dict
 } GlzSharedDictionary;
 
-GlzSharedDictionary* dcc_get_glz_dictionary                  (DisplayChannelClient *dcc,
+GlzSharedDictionary* dcc_get_glz_dictionary                  (struct DisplayChannelClient *dcc,
                                                               uint8_t id, int window_size);
-GlzSharedDictionary* dcc_restore_glz_dictionary              (DisplayChannelClient *dcc,
+GlzSharedDictionary* dcc_restore_glz_dictionary              (struct DisplayChannelClient *dcc,
                                                               uint8_t id,
                                                               GlzEncDictRestoreData *restore_data);
 
 typedef struct  {
-    DisplayChannelClient *dcc;
+    struct DisplayChannelClient *dcc;
     RedCompressBuf *bufs_head;
     RedCompressBuf *bufs_tail;
     jmp_buf jmp_env;
@@ -101,7 +106,7 @@ typedef struct  {
     char message_buf[512];
 } EncoderData;
 
-void encoder_data_init(EncoderData *data, DisplayChannelClient *dcc);
+void encoder_data_init(EncoderData *data, struct DisplayChannelClient *dcc);
 void encoder_data_reset(EncoderData *data);
 
 typedef struct {
@@ -156,11 +161,11 @@ struct RedGlzDrawable {
     RingItem link;    // ordered by the time it was encoded
     RingItem drawable_link;
     RedDrawable *red_drawable;
-    Drawable    *drawable;
+    struct Drawable    *drawable;
     GlzDrawableInstanceItem instances_pool[MAX_GLZ_DRAWABLE_INSTANCES];
     Ring instances;
     uint8_t instances_count;
-    DisplayChannelClient *dcc;
+    struct DisplayChannelClient *dcc;
 };
 
 #define RED_RELEASE_BUNCH_SIZE 64
diff --git a/server/dcc-send.c b/server/dcc-send.c
index 5f967cc..67e505c 100644
--- a/server/dcc-send.c
+++ b/server/dcc-send.c
@@ -19,12 +19,14 @@
 #include <config.h>
 #endif
 
-#include "dcc.h"
-#include "display-channel.h"
-
 #include <common/marshaller.h>
 #include <common/generated_server_marshallers.h>
 
+#include "reds.h"
+#include "dcc.h"
+#include "display-channel.h"
+#include "cache-item.h"
+
 typedef enum {
     FILL_BITS_TYPE_INVALID,
     FILL_BITS_TYPE_CACHE,
diff --git a/server/dcc.c b/server/dcc.c
index db77cc7..a73d9b9 100644
--- a/server/dcc.c
+++ b/server/dcc.c
@@ -21,6 +21,8 @@
 
 #include "dcc.h"
 #include "display-channel.h"
+#include "migration-protocol.h"
+#include "cache-item.h"
 
 #define DISPLAY_CLIENT_SHORT_TIMEOUT 15000000000ULL //nano
 
diff --git a/server/dcc.h b/server/dcc.h
index 1dd53bd..9d0b554 100644
--- a/server/dcc.h
+++ b/server/dcc.h
@@ -18,12 +18,12 @@
 #ifndef DCC_H_
 # define DCC_H_
 
-#include "red-worker.h"
+#include "image-cache.h"
 #include "pixmap-cache.h"
-#include "cache-item.h"
+#include "display-limits.h"
+#include "red-worker.h"
 #include "dcc-encoders.h"
 #include "stream.h"
-#include "display-limits.h"
 
 #define PALETTE_CACHE_HASH_SHIFT 8
 #define PALETTE_CACHE_HASH_SIZE (1 << PALETTE_CACHE_HASH_SHIFT)
@@ -42,6 +42,8 @@
 
 #define MAX_PIPE_SIZE 50
 
+struct RedCacheItem;
+
 typedef struct WaitForChannels {
     SpiceMsgWaitForChannels header;
     SpiceWaitForChannel buf[MAX_CACHE_CLIENTS];
@@ -82,7 +84,7 @@ struct DisplayChannelClient {
     uint32_t pixmap_cache_generation;
     int pending_pixmaps_sync;
 
-    RedCacheItem *palette_cache[PALETTE_CACHE_HASH_SIZE];
+    struct RedCacheItem *palette_cache[PALETTE_CACHE_HASH_SIZE];
     Ring palette_cache_lru;
     long palette_cache_available;
     uint32_t palette_cache_items;
diff --git a/server/demarshallers.h b/server/demarshallers.h
index c3d770d..dc35645 100644
--- a/server/demarshallers.h
+++ b/server/demarshallers.h
@@ -17,6 +17,9 @@
 #ifndef _H_DEMARSHAL
 #define _H_DEMARSHAL
 
+#include <stddef.h>
+#include <inttypes.h>
+
 typedef void (*message_destructor_t)(uint8_t *message);
 typedef uint8_t * (*spice_parse_channel_func_t)(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor,
                                                 size_t *size_out, message_destructor_t *free_message);
diff --git a/server/dispatcher.c b/server/dispatcher.c
index b9e23f6..7ffd537 100644
--- a/server/dispatcher.c
+++ b/server/dispatcher.c
@@ -30,6 +30,8 @@
 
 #include <common/mem.h>
 #include <common/spice_common.h>
+
+#include "red-common.h"
 #include "dispatcher.h"
 
 //#define DEBUG_DISPATCHER
diff --git a/server/dispatcher.h b/server/dispatcher.h
index 07b1137..b187a0e 100644
--- a/server/dispatcher.h
+++ b/server/dispatcher.h
@@ -18,10 +18,9 @@
 #ifndef DISPATCHER_H
 #define DISPATCHER_H
 
+#include <inttypes.h>
 #include <glib-object.h>
 
-#include "red-common.h"
-
 #define TYPE_DISPATCHER dispatcher_get_type()
 
 #define DISPATCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TYPE_DISPATCHER, Dispatcher))
diff --git a/server/display-channel.c b/server/display-channel.c
index 1f4d66f..245f241 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -18,7 +18,10 @@
 #include <config.h>
 #endif
 
+#include <common/sw_canvas.h>
+
 #include "display-channel.h"
+#include "reds.h"
 
 static void drawable_draw(DisplayChannel *display, Drawable *drawable);
 
diff --git a/server/display-channel.h b/server/display-channel.h
index 76668de..dfc0574 100644
--- a/server/display-channel.h
+++ b/server/display-channel.h
@@ -20,32 +20,12 @@
 
 #include <setjmp.h>
 #include <common/rect.h>
-#include <common/sw_canvas.h>
-
-#include "red-worker.h"
-#include "reds-stream.h"
-#include "cache-item.h"
-#include "pixmap-cache.h"
-#include "stat.h"
-#include "reds.h"
-#include "memslot.h"
-#include "red-parse-qxl.h"
-#include "red-record-qxl.h"
-#include "demarshallers.h"
-#include "red-channel.h"
-#include "red-qxl.h"
-#include "dispatcher.h"
-#include "main-channel.h"
-#include "migration-protocol.h"
-#include "main-dispatcher.h"
+
 #include "spice-bitmap-utils.h"
-#include "image-cache.h"
-#include "utils.h"
 #include "tree.h"
+#include "red-channel.h"
 #include "stream.h"
 #include "dcc.h"
-#include "display-limits.h"
-
 
 typedef struct DependItem {
     Drawable *drawable;
diff --git a/server/glz-encoder-priv.h b/server/glz-encoder-priv.h
index 919c439..a4609d9 100644
--- a/server/glz-encoder-priv.h
+++ b/server/glz-encoder-priv.h
@@ -18,7 +18,10 @@
 #ifndef GLZ_ENCODER_PRIV_H_
 #define GLZ_ENCODER_PRIV_H_
 
-#include "red-common.h"
+#include <pthread.h>
+#include <common/lz_common.h>
+
+#include "glz-encoder-dict.h"
 
 /* Interface for using the dictionary for encoding.
    Data structures are exposed for the encoder for efficiency
diff --git a/server/glz-encoder.h b/server/glz-encoder.h
index acc32b2..6c57d8a 100644
--- a/server/glz-encoder.h
+++ b/server/glz-encoder.h
@@ -22,7 +22,6 @@
 
 #include <common/lz_common.h>
 
-#include "red-common.h"
 #include "glz-encoder-dict.h"
 
 struct GlzEncoderUsrContext {
diff --git a/server/inputs-channel.h b/server/inputs-channel.h
index fce757f..9213aec 100644
--- a/server/inputs-channel.h
+++ b/server/inputs-channel.h
@@ -24,6 +24,8 @@
 #include <stdint.h>
 #include <spice/vd_agent.h>
 
+#include "red-channel.h"
+
 typedef struct InputsChannel InputsChannel;
 
 InputsChannel* inputs_channel_new(RedsState *reds);
diff --git a/server/main-dispatcher.h b/server/main-dispatcher.h
index 9a425de..3e9d9de 100644
--- a/server/main-dispatcher.h
+++ b/server/main-dispatcher.h
@@ -18,7 +18,6 @@
 #ifndef MAIN_DISPATCHER_H
 #define MAIN_DISPATCHER_H
 
-#include "spice.h"
 #include "dispatcher.h"
 #include "red-channel.h"
 
diff --git a/server/memslot.c b/server/memslot.c
index 99c63e4..0881f86 100644
--- a/server/memslot.c
+++ b/server/memslot.c
@@ -19,8 +19,7 @@
 #include <config.h>
 #endif
 
-#include <inttypes.h>
-
+#include "red-common.h"
 #include "memslot.h"
 
 static unsigned long __get_clean_virt(RedMemSlotInfo *info, QXLPHYSICAL addr)
diff --git a/server/memslot.h b/server/memslot.h
index a29837c..c4aa8c6 100644
--- a/server/memslot.h
+++ b/server/memslot.h
@@ -21,8 +21,6 @@
 
 #include <spice/qxl_dev.h>
 
-#include "red-common.h"
-
 typedef struct MemSlot {
     int generation;
     unsigned long virt_start_addr;
diff --git a/server/migration-protocol.h b/server/migration-protocol.h
index 16eafbe..3f08150 100644
--- a/server/migration-protocol.h
+++ b/server/migration-protocol.h
@@ -20,6 +20,7 @@
 
 #include <spice/macros.h>
 #include <spice/vd_agent.h>
+#include <common/log.h>
 
 #include "glz-encoder-dict.h"
 
diff --git a/server/pixmap-cache.c b/server/pixmap-cache.c
index a485268..12081ac 100644
--- a/server/pixmap-cache.c
+++ b/server/pixmap-cache.c
@@ -18,6 +18,7 @@
 #include <config.h>
 #endif
 
+#include "red-channel.h"
 #include "pixmap-cache.h"
 
 int pixmap_cache_unlocked_set_lossy(PixmapCache *cache, uint64_t id, int lossy)
diff --git a/server/pixmap-cache.h b/server/pixmap-cache.h
index 66658f3..6bce986 100644
--- a/server/pixmap-cache.h
+++ b/server/pixmap-cache.h
@@ -18,7 +18,9 @@
 #ifndef _PIXMAP_CACHE_H
 # define _PIXMAP_CACHE_H
 
-#include "red-channel.h"
+#include <stddef.h>
+#include <inttypes.h>
+#include <common/ring.h>
 
 #define MAX_CACHE_CLIENTS 4
 
@@ -27,6 +29,8 @@
 #define BITS_CACHE_HASH_MASK (BITS_CACHE_HASH_SIZE - 1)
 #define BITS_CACHE_HASH_KEY(id) ((id) & BITS_CACHE_HASH_MASK)
 
+struct RedClient;
+
 typedef struct PixmapCache PixmapCache;
 typedef struct NewCacheItem NewCacheItem;
 
@@ -61,10 +65,10 @@ struct PixmapCache {
     } generation_initiator;
     uint64_t sync[MAX_CACHE_CLIENTS]; // here CLIENTS refer to different channel
                                       // clients of the same client
-    RedClient *client;
+    struct RedClient *client;
 };
 
-PixmapCache *pixmap_cache_get(RedClient *client, uint8_t id, int64_t size);
+PixmapCache *pixmap_cache_get(struct RedClient *client, uint8_t id, int64_t size);
 void         pixmap_cache_unref(PixmapCache *cache);
 void         pixmap_cache_clear(PixmapCache *cache);
 int          pixmap_cache_unlocked_set_lossy(PixmapCache *cache, uint64_t id, int lossy);
diff --git a/server/red-channel.h b/server/red-channel.h
index 03e6407..6ec5a18 100644
--- a/server/red-channel.h
+++ b/server/red-channel.h
@@ -27,12 +27,10 @@
 #include <common/ring.h>
 #include <common/marshaller.h>
 
-#include "spice.h"
-#include "red-common.h"
 #include "demarshallers.h"
-#include "reds-stream.h"
 #include "stat.h"
 #include "red-pipe-item.h"
+#include "reds-stream.h"
 
 #define MAX_SEND_BUFS 1000
 #define CLIENT_ACK_WINDOW 20
diff --git a/server/red-parse-qxl.h b/server/red-parse-qxl.h
index 0749b88..508a1b3 100644
--- a/server/red-parse-qxl.h
+++ b/server/red-parse-qxl.h
@@ -16,12 +16,14 @@
    License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef RED_ABI_TRANSLATE_H
-#define RED_ABI_TRANSLATE_H
+#ifndef RED_PARSE_QXL_H
+#define RED_PARSE_QXL_H
 
+#include <common/draw.h>
+#include <common/messages.h>
 #include <spice/qxl_dev.h>
 
-#include "red-common.h"
+#include "spice-qxl.h"
 #include "memslot.h"
 
 typedef struct RedDrawable {
diff --git a/server/red-pipe-item.h b/server/red-pipe-item.h
index 8bb12b7..0ff4852 100644
--- a/server/red-pipe-item.h
+++ b/server/red-pipe-item.h
@@ -19,6 +19,7 @@
 #define _H_RED_PIPE_ITEM
 
 #include <glib.h>
+#include <common/ring.h>
 
 typedef struct {
     RingItem link;
diff --git a/server/red-qxl.h b/server/red-qxl.h
index c9b6b36..ce80f97 100644
--- a/server/red-qxl.h
+++ b/server/red-qxl.h
@@ -19,7 +19,6 @@
 #define _H_RED_DISPATCHER
 
 #include "red-channel.h"
-#include "spice-qxl.h"
 
 typedef struct AsyncCommand AsyncCommand;
 
diff --git a/server/red-record-qxl.h b/server/red-record-qxl.h
index d5eaaa0..0aa549f 100644
--- a/server/red-record-qxl.h
+++ b/server/red-record-qxl.h
@@ -16,12 +16,13 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef RED_ABI_RECORD_H
-#define RED_ABI_RECORD_H
+#ifndef RED_RECORD_QXL_H
+#define RED_RECORD_QXL_H
 
+#include <stdio.h>
 #include <spice/qxl_dev.h>
 
-#include "red-common.h"
+#include "spice-qxl.h"
 #include "memslot.h"
 
 void red_record_dev_input_primary_surface_create(
diff --git a/server/red-replay-qxl.h b/server/red-replay-qxl.h
index c9e074d..f33820c 100644
--- a/server/red-replay-qxl.h
+++ b/server/red-replay-qxl.h
@@ -21,7 +21,7 @@
 #include <stdio.h>
 #include <spice/qxl_dev.h>
 
-#include "spice.h"
+#include "spice-qxl.h"
 
 typedef struct SpiceReplay SpiceReplay;
 
diff --git a/server/red-worker.c b/server/red-worker.c
index 8d8073e..33af442 100644
--- a/server/red-worker.c
+++ b/server/red-worker.c
@@ -48,9 +48,12 @@
 #include "stream.h"
 
 #include "spice.h"
+#include "red-record-qxl.h"
 #include "red-worker.h"
 #include "cursor-channel.h"
 #include "tree.h"
+#include "main-channel.h"
+#include "reds.h"
 
 #define CMD_RING_POLL_TIMEOUT 10 //milli
 #define CMD_RING_POLL_RETRIES 1
diff --git a/server/red-worker.h b/server/red-worker.h
index d7525e0..8517af5 100644
--- a/server/red-worker.h
+++ b/server/red-worker.h
@@ -18,9 +18,8 @@
 #ifndef _H_REDWORKER
 #define _H_REDWORKER
 
-#include "red-common.h"
-#include "red-qxl.h"
 #include "red-parse-qxl.h"
+#include "red-qxl.h"
 
 typedef struct RedWorker RedWorker;
 
diff --git a/server/reds-private.h b/server/reds-private.h
index 74a251b..b2f00b6 100644
--- a/server/reds-private.h
+++ b/server/reds-private.h
@@ -19,6 +19,11 @@
 #define REDS_PRIVATE_H
 
 #include <spice/protocol.h>
+#include <spice/stats.h>
+
+#include "main-dispatcher.h"
+#include "main-channel.h"
+#include "inputs-channel.h"
 
 #define MIGRATE_TIMEOUT (MSEC_PER_SEC * 10)
 #define MM_TIME_DELTA 400 /*ms*/
diff --git a/server/reds-stream.h b/server/reds-stream.h
index a8d1736..9d8038f 100644
--- a/server/reds-stream.h
+++ b/server/reds-stream.h
@@ -18,11 +18,8 @@
 #ifndef _H_REDS_STREAM
 #define _H_REDS_STREAM
 
-#include <stdbool.h>
 #include <openssl/ssl.h>
-#include <common/mem.h>
 
-#include "spice.h"
 #include "red-common.h"
 
 typedef void (*AsyncReadDone)(void *opaque);
diff --git a/server/reds.h b/server/reds.h
index ec1ea59..5946c3f 100644
--- a/server/reds.h
+++ b/server/reds.h
@@ -24,11 +24,10 @@
 #include <common/marshaller.h>
 #include <common/messages.h>
 
+#include "migration-protocol.h"
 #include "char-device.h"
-#include "spice.h"
 #include "red-channel.h"
 #include "main-dispatcher.h"
-#include "migration-protocol.h"
 
 static inline QXLInterface * qxl_get_interface(QXLInstance *qxl)
 {
diff --git a/server/smartcard.h b/server/smartcard.h
index 6bda594..2d1356e 100644
--- a/server/smartcard.h
+++ b/server/smartcard.h
@@ -20,6 +20,8 @@
 
 #include <glib-object.h>
 
+#include "char-device.h"
+
 #define RED_TYPE_CHAR_DEVICE_SMARTCARD red_char_device_smartcard_get_type()
 
 #define RED_CHAR_DEVICE_SMARTCARD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), RED_TYPE_CHAR_DEVICE_SMARTCARD, RedCharDeviceSmartcard))
diff --git a/server/sound.h b/server/sound.h
index 25e59f0..76174cf 100644
--- a/server/sound.h
+++ b/server/sound.h
@@ -18,7 +18,9 @@
 #ifndef SOUND_H_
 #define SOUND_H_
 
-#include "spice.h"
+#include "red-common.h"
+
+struct RedClient;
 
 void snd_attach_playback(RedsState *reds, SpicePlaybackInstance *sin);
 void snd_detach_playback(SpicePlaybackInstance *sin);
@@ -28,6 +30,6 @@ void snd_detach_record(SpiceRecordInstance *sin);
 
 void snd_set_playback_compression(int on);
 
-void snd_set_playback_latency(RedClient *client, uint32_t latency);
+void snd_set_playback_latency(struct RedClient *client, uint32_t latency);
 
 #endif
diff --git a/server/spice-bitmap-utils.h b/server/spice-bitmap-utils.h
index ffb6c74..89a9068 100644
--- a/server/spice-bitmap-utils.h
+++ b/server/spice-bitmap-utils.h
@@ -18,7 +18,10 @@
 #ifndef SPICE_BITMAP_UTILS_H_
 #define SPICE_BITMAP_UTILS_H_
 
-#include "red-common.h"
+#include <glib.h>
+#include <spice/qxl_dev.h>
+#include <common/draw.h>
+#include <common/log.h>
 
 typedef enum {
     BITMAP_GRADUAL_INVALID,
diff --git a/server/stat.h b/server/stat.h
index 7db27ee..f6f7a04 100644
--- a/server/stat.h
+++ b/server/stat.h
@@ -21,6 +21,8 @@
 #include <stdint.h>
 #include <glib.h>
 
+#include "spice.h"
+
 typedef uint32_t StatNodeRef;
 #define INVALID_STAT_REF (~(StatNodeRef)0)
 
diff --git a/server/stream.c b/server/stream.c
index 8884480..2f194ce 100644
--- a/server/stream.c
+++ b/server/stream.c
@@ -20,6 +20,8 @@
 
 #include "stream.h"
 #include "display-channel.h"
+#include "main-channel.h"
+#include "reds.h"
 
 #define FPS_TEST_INTERVAL 1
 #define FOREACH_STREAMS(display, item)                  \
diff --git a/server/stream.h b/server/stream.h
index 3c8d761..a21f6b0 100644
--- a/server/stream.h
+++ b/server/stream.h
@@ -21,7 +21,6 @@
 #include <glib.h>
 #include <common/region.h>
 
-#include "utils.h"
 #include "video-encoder.h"
 #include "red-channel.h"
 #include "image-cache.h"
diff --git a/server/tests/replay.c b/server/tests/replay.c
index d552327..0b5f0ed 100644
--- a/server/tests/replay.c
+++ b/server/tests/replay.c
@@ -36,6 +36,7 @@
 #include <pthread.h>
 
 #include <spice/macros.h>
+#include "spice.h"
 #include "red-replay-qxl.h"
 #include "test_display_base.h"
 #include <common/log.h>
diff --git a/server/tests/test-qxl-parsing.c b/server/tests/test-qxl-parsing.c
index a3b2e6c..0a6b8e4 100644
--- a/server/tests/test-qxl-parsing.c
+++ b/server/tests/test-qxl-parsing.c
@@ -10,6 +10,7 @@
 #include <assert.h>
 
 #include <spice/macros.h>
+#include "spice.h"
 #include "memslot.h"
 #include "red-parse-qxl.h"
 
diff --git a/server/tree.h b/server/tree.h
index 5260ce8..52ddad9 100644
--- a/server/tree.h
+++ b/server/tree.h
@@ -21,8 +21,7 @@
 #include <stdint.h>
 #include <common/region.h>
 #include <common/ring.h>
-
-#include "spice-bitmap-utils.h"
+#include <spice/qxl_dev.h>
 
 enum {
     TREE_ITEM_TYPE_NONE,
diff --git a/server/utils.h b/server/utils.h
index 00631f8..fcd6a43 100644
--- a/server/utils.h
+++ b/server/utils.h
@@ -18,7 +18,8 @@
 #ifndef UTILS_H_
 # define UTILS_H_
 
-#include "red-common.h"
+#include <inttypes.h>
+#include <glib.h>
 
 #define SPICE_GNUC_VISIBLE __attribute__ ((visibility ("default")))
 
diff --git a/server/video-encoder.h b/server/video-encoder.h
index 9833e13..8aa7783 100644
--- a/server/video-encoder.h
+++ b/server/video-encoder.h
@@ -21,6 +21,9 @@
 #ifndef _H_VIDEO_ENCODER
 #define _H_VIDEO_ENCODER
 
+#include <inttypes.h>
+#include <common/draw.h>
+
 enum {
     VIDEO_ENCODER_FRAME_UNSUPPORTED = -1,
     VIDEO_ENCODER_FRAME_DROP,
diff --git a/server/zlib-encoder.h b/server/zlib-encoder.h
index 0620fc7..2800102 100644
--- a/server/zlib-encoder.h
+++ b/server/zlib-encoder.h
@@ -30,6 +30,8 @@
 #ifndef _H_ZLIB_ENCODER
 #define _H_ZLIB_ENCODER
 
+#include <inttypes.h>
+
 typedef struct ZlibEncoder ZlibEncoder;
 typedef struct ZlibEncoderUsrContext ZlibEncoderUsrContext;
 
-- 
2.5.5



More information about the Spice-devel mailing list