[Spice-devel] [PATCH] RFC Avoid multiple typedef in headers
Frediano Ziglio
fziglio at redhat.com
Tue May 24 16:38:19 UTC 2016
This after typedef discussions.
This version moved Drawable into a separate file.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/Makefile.am | 1 +
server/dcc-encoders.c | 2 +-
server/dcc-encoders.h | 1 +
server/dcc.h | 8 ++++--
server/display-channel.h | 39 ++--------------------------
server/drawable.h | 67 ++++++++++++++++++++++++++++++++++++++++++++++++
server/image-cache.h | 4 +--
server/stream.h | 29 +++++++++++----------
8 files changed, 94 insertions(+), 57 deletions(-)
create mode 100644 server/drawable.h
diff --git a/server/Makefile.am b/server/Makefile.am
index 5a5c7e8..1cdc802 100644
--- a/server/Makefile.am
+++ b/server/Makefile.am
@@ -111,6 +111,7 @@ libserver_la_SOURCES = \
red-worker.h \
display-channel.c \
display-channel.h \
+ drawable.h \
cursor-channel.c \
cursor-channel.h \
red-pipe-item.c \
diff --git a/server/dcc-encoders.c b/server/dcc-encoders.c
index 65f5a17..febf269 100644
--- a/server/dcc-encoders.c
+++ b/server/dcc-encoders.c
@@ -21,7 +21,7 @@
#include <glib.h>
-#include "dcc-encoders.h"
+#include "dcc.h"
#include "display-channel.h"
#define ZLIB_DEFAULT_COMPRESSION_LEVEL 3
diff --git a/server/dcc-encoders.h b/server/dcc-encoders.h
index 84f9f93..0a7e748 100644
--- a/server/dcc-encoders.h
+++ b/server/dcc-encoders.h
@@ -31,6 +31,7 @@
#include "lz4-encoder.h"
#endif
#include "zlib-encoder.h"
+#include "drawable.h"
typedef struct RedCompressBuf RedCompressBuf;
typedef struct GlzDrawableInstanceItem GlzDrawableInstanceItem;
diff --git a/server/dcc.h b/server/dcc.h
index a11d25a..8cf4414 100644
--- a/server/dcc.h
+++ b/server/dcc.h
@@ -21,9 +21,13 @@
#include "red-worker.h"
#include "pixmap-cache.h"
#include "cache-item.h"
-#include "dcc-encoders.h"
#include "stream.h"
#include "display-limits.h"
+#include "drawable.h"
+
+typedef struct DisplayChannelClient DisplayChannelClient;
+
+#include "dcc-encoders.h"
#define PALETTE_CACHE_HASH_SHIFT 8
#define PALETTE_CACHE_HASH_SIZE (1 << PALETTE_CACHE_HASH_SHIFT)
@@ -156,7 +160,7 @@ typedef struct RedDrawablePipeItem {
DisplayChannelClient *dcc;
} RedDrawablePipeItem;
-DisplayChannelClient* dcc_new (DisplayChannel *display,
+DisplayChannelClient* dcc_new (struct DisplayChannel *display,
RedClient *client,
RedsStream *stream,
int mig_target,
diff --git a/server/display-channel.h b/server/display-channel.h
index 4eb78c5..a186019 100644
--- a/server/display-channel.h
+++ b/server/display-channel.h
@@ -22,6 +22,7 @@
#include <common/rect.h>
#include <common/sw_canvas.h>
+#include "drawable.h"
#include "red-worker.h"
#include "reds-stream.h"
#include "cache-item.h"
@@ -46,43 +47,7 @@
#include "dcc.h"
#include "display-limits.h"
-
-typedef struct DependItem {
- Drawable *drawable;
- RingItem ring_item;
-} DependItem;
-
-struct Drawable {
- uint8_t refs;
- RingItem surface_list_link;
- RingItem list_link;
- DrawItem tree_item;
- Ring pipes;
- RedPipeItem *pipe_item_rest;
- uint32_t size_pipe_item_rest;
- RedDrawable *red_drawable;
-
- Ring glz_ring;
-
- red_time_t creation_time;
- red_time_t first_frame_time;
- int frames_count;
- int gradual_frames_count;
- int last_gradual_frame;
- Stream *stream;
- Stream *sized_stream;
- int streamable;
- BitmapGradualType copy_bitmap_graduality;
- DependItem depend_items[3];
-
- int surface_id;
- int surface_deps[3];
-
- uint32_t process_commands_generation;
- DisplayChannel *display;
-};
-
-void drawable_unref (Drawable *drawable);
+typedef struct DisplayChannel DisplayChannel;
#define LINK_TO_DPI(ptr) SPICE_CONTAINEROF((ptr), RedDrawablePipeItem, base)
#define DRAWABLE_FOREACH_DPI_SAFE(drawable, link, next, dpi) \
diff --git a/server/drawable.h b/server/drawable.h
new file mode 100644
index 0000000..a9da312
--- /dev/null
+++ b/server/drawable.h
@@ -0,0 +1,67 @@
+/* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+ Copyright (C) 2009-2015 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 DRAWABLE_H_
+#define DRAWABLE_H_
+
+#include "red-pipe-item.h"
+#include "red-parse-qxl.h"
+#include "tree.h"
+
+struct Stream;
+struct DisplayChannel;
+
+typedef struct Drawable Drawable;
+
+typedef struct DependItem {
+ Drawable *drawable;
+ RingItem ring_item;
+} DependItem;
+
+struct Drawable {
+ uint8_t refs;
+ RingItem surface_list_link;
+ RingItem list_link;
+ DrawItem tree_item;
+ Ring pipes;
+ RedPipeItem *pipe_item_rest;
+ uint32_t size_pipe_item_rest;
+ RedDrawable *red_drawable;
+
+ Ring glz_ring;
+
+ red_time_t creation_time;
+ red_time_t first_frame_time;
+ int frames_count;
+ int gradual_frames_count;
+ int last_gradual_frame;
+ struct Stream *stream;
+ struct Stream *sized_stream;
+ int streamable;
+ BitmapGradualType copy_bitmap_graduality;
+ DependItem depend_items[3];
+
+ int surface_id;
+ int surface_deps[3];
+
+ uint32_t process_commands_generation;
+ struct DisplayChannel *display;
+};
+
+void drawable_unref (Drawable *drawable);
+
+#endif /* DRAWABLE_H_ */
diff --git a/server/image-cache.h b/server/image-cache.h
index 38a318e..b576308 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 "drawable.h"
typedef struct ImageCacheItem {
RingItem lru_link;
diff --git a/server/stream.h b/server/stream.h
index 715f920..3cc689a 100644
--- a/server/stream.h
+++ b/server/stream.h
@@ -25,6 +25,7 @@
#include "video-encoder.h"
#include "red-channel.h"
#include "image-cache.h"
+#include "drawable.h"
#define RED_STREAM_DETACTION_MAX_DELTA (NSEC_PER_SEC / 5)
#define RED_STREAM_CONTINUS_MAX_DELTA NSEC_PER_SEC
@@ -42,8 +43,8 @@
#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;
+struct DisplayChannel;
+struct DisplayChannelClient;
typedef struct Stream Stream;
@@ -85,7 +86,7 @@ typedef struct StreamAgent {
Stream *stream;
uint64_t last_send_time;
VideoEncoder *video_encoder;
- DisplayChannelClient *dcc;
+ struct DisplayChannelClient *dcc;
int frames;
int drops;
@@ -139,28 +140,28 @@ struct Stream {
uint32_t input_fps;
};
-void display_channel_init_streams (DisplayChannel *display);
-void stream_stop (DisplayChannel *display,
+void display_channel_init_streams (struct DisplayChannel *display);
+void stream_stop (struct DisplayChannel *display,
Stream *stream);
-void stream_unref (DisplayChannel *display,
+void stream_unref (struct DisplayChannel *display,
Stream *stream);
-void stream_trace_update (DisplayChannel *display,
+void stream_trace_update (struct DisplayChannel *display,
Drawable *drawable);
-void stream_maintenance (DisplayChannel *display,
+void stream_maintenance (struct DisplayChannel *display,
Drawable *candidate,
Drawable *prev);
-void stream_timeout (DisplayChannel *display);
-void stream_detach_and_stop (DisplayChannel *display);
-void stream_trace_add_drawable (DisplayChannel *display,
+void stream_timeout (struct DisplayChannel *display);
+void stream_detach_and_stop (struct DisplayChannel *display);
+void stream_trace_add_drawable (struct DisplayChannel *display,
Drawable *item);
-void stream_detach_behind (DisplayChannel *display,
+void stream_detach_behind (struct DisplayChannel *display,
QRegion *region,
Drawable *drawable);
-void stream_agent_unref (DisplayChannel *display,
+void stream_agent_unref (struct DisplayChannel *display,
StreamAgent *agent);
void stream_agent_stop (StreamAgent *agent);
-void detach_stream(DisplayChannel *display, Stream *stream, int detach_sized);
+void detach_stream(struct DisplayChannel *display, Stream *stream, int detach_sized);
#endif /* STREAM_H */
--
2.7.4
More information about the Spice-devel
mailing list