[Spice-devel] [PATCH 11/19] server: move enum and struct away from red_common
Frediano Ziglio
fziglio at redhat.com
Wed Nov 25 07:27:35 PST 2015
From: Marc-André Lureau <marcandre.lureau at gmail.com>
---
server/dcc.c | 18 ++++++++++++++++--
server/red_common.h | 14 --------------
server/red_dispatcher.c | 15 +++++++++++++--
server/reds.c | 2 +-
server/stream.h | 7 +++++++
5 files changed, 37 insertions(+), 19 deletions(-)
diff --git a/server/dcc.c b/server/dcc.c
index 6c089da..ffe5b34 100644
--- a/server/dcc.c
+++ b/server/dcc.c
@@ -616,6 +616,20 @@ static GlzDrawableInstanceItem *add_glz_drawable_instance(RedGlzDrawable *glz_dr
return ret;
}
+static const LzImageType bitmap_fmt_to_lz_image_type[] = {
+ LZ_IMAGE_TYPE_INVALID,
+ LZ_IMAGE_TYPE_PLT1_LE,
+ LZ_IMAGE_TYPE_PLT1_BE,
+ LZ_IMAGE_TYPE_PLT4_LE,
+ LZ_IMAGE_TYPE_PLT4_BE,
+ LZ_IMAGE_TYPE_PLT8,
+ LZ_IMAGE_TYPE_RGB16,
+ LZ_IMAGE_TYPE_RGB24,
+ LZ_IMAGE_TYPE_RGB32,
+ LZ_IMAGE_TYPE_RGBA,
+ LZ_IMAGE_TYPE_A8
+};
+
#define MIN_GLZ_SIZE_FOR_ZLIB 100
int dcc_compress_image_glz(DisplayChannelClient *dcc,
@@ -629,7 +643,7 @@ int dcc_compress_image_glz(DisplayChannelClient *dcc,
spice_assert(bitmap_fmt_is_rgb(src->format));
GlzData *glz_data = &dcc->glz_data;
ZlibData *zlib_data;
- LzImageType type = MAP_BITMAP_FMT_TO_LZ_IMAGE_TYPE[src->format];
+ LzImageType type = bitmap_fmt_to_lz_image_type[src->format];
RedGlzDrawable *glz_drawable;
GlzDrawableInstanceItem *glz_drawable_instance;
int glz_size;
@@ -710,7 +724,7 @@ int dcc_compress_image_lz(DisplayChannelClient *dcc,
{
LzData *lz_data = &dcc->lz_data;
LzContext *lz = dcc->lz;
- LzImageType type = MAP_BITMAP_FMT_TO_LZ_IMAGE_TYPE[src->format];
+ LzImageType type = bitmap_fmt_to_lz_image_type[src->format];
int size; // size of the compressed data
#ifdef COMPRESS_STAT
diff --git a/server/red_common.h b/server/red_common.h
index 04d4c02..7f1677e 100644
--- a/server/red_common.h
+++ b/server/red_common.h
@@ -30,18 +30,4 @@
#define SPICE_GNUC_VISIBLE __attribute__ ((visibility ("default")))
-static const LzImageType MAP_BITMAP_FMT_TO_LZ_IMAGE_TYPE[] = {
- LZ_IMAGE_TYPE_INVALID,
- LZ_IMAGE_TYPE_PLT1_LE,
- LZ_IMAGE_TYPE_PLT1_BE,
- LZ_IMAGE_TYPE_PLT4_LE,
- LZ_IMAGE_TYPE_PLT4_BE,
- LZ_IMAGE_TYPE_PLT8,
- LZ_IMAGE_TYPE_RGB16,
- LZ_IMAGE_TYPE_RGB24,
- LZ_IMAGE_TYPE_RGB32,
- LZ_IMAGE_TYPE_RGBA,
- LZ_IMAGE_TYPE_A8
-};
-
#endif
diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c
index a7825f5..952add9 100644
--- a/server/red_dispatcher.c
+++ b/server/red_dispatcher.c
@@ -36,6 +36,7 @@
#include "reds.h"
#include "dispatcher.h"
#include "red_parse_qxl.h"
+#include "stream.h"
#include "red_dispatcher.h"
@@ -702,9 +703,19 @@ static void qxl_worker_loadvm_commands(QXLWorker *qxl_worker,
red_dispatcher_loadvm_commands((RedDispatcher*)qxl_worker, ext, count);
}
-static inline int calc_compression_level(void)
+void red_dispatcher_set_mm_time(uint32_t mm_time)
{
- spice_assert(streaming_video != SPICE_STREAM_VIDEO_INVALID);
+ RedDispatcher *now = dispatchers;
+ while (now) {
+ now->qxl->st->qif->set_mm_time(now->qxl, mm_time);
+ now = now->next;
+ }
+}
+
+static int calc_compression_level(void)
+{
+ spice_return_val_if_fail(streaming_video != SPICE_STREAM_VIDEO_INVALID, -1);
+
if ((streaming_video != SPICE_STREAM_VIDEO_OFF) ||
(image_compression != SPICE_IMAGE_COMPRESSION_QUIC)) {
return 0;
diff --git a/server/reds.c b/server/reds.c
index 8b3c3cb..bdea7e1 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -55,10 +55,10 @@
#include "spice.h"
#include "reds.h"
+#include "stream.h"
#include "agent-msg-filter.h"
#include "inputs_channel.h"
#include "main_channel.h"
-#include "red_common.h"
#include "red_dispatcher.h"
#include "main_dispatcher.h"
#include "snd_worker.h"
diff --git a/server/stream.h b/server/stream.h
index 7c589e4..30876f1 100644
--- a/server/stream.h
+++ b/server/stream.h
@@ -57,6 +57,13 @@ enum {
STREAM_FRAME_CONTAINER,
};
+enum {
+ STREAM_VIDEO_INVALID,
+ STREAM_VIDEO_OFF,
+ STREAM_VIDEO_ALL,
+ STREAM_VIDEO_FILTER
+};
+
#define STREAM_STATS
#ifdef STREAM_STATS
typedef struct StreamStats {
--
2.4.3
More information about the Spice-devel
mailing list