summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Celaya <javier.celaya@flexvdi.com>2015-06-03 16:58:18 +0200
committerChristophe Fergeau <cfergeau@redhat.com>2015-06-29 15:22:53 +0200
commitf3803e0ad12f05b8f3da941c19cda3e153da1ea1 (patch)
tree0e393a3ccb2a2156ce494e72d581006ed85c87c7
parent3910be9089e9af946d4bc79b7b8f25aff0c5d5c1 (diff)
Add a preferred-compression program option
-rw-r--r--src/spice-option.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/spice-option.c b/src/spice-option.c
index 958e03c..463a3e3 100644
--- a/src/spice-option.c
+++ b/src/spice-option.c
@@ -41,6 +41,7 @@ static gint cache_size = 0;
static gint glz_window_size = 0;
static gchar *secure_channels = NULL;
static gchar *shared_dir = NULL;
+static SpiceImageCompress preferred_compression = SPICE_IMAGE_COMPRESS_INVALID;
G_GNUC_NORETURN
static void option_version(void)
@@ -149,6 +150,33 @@ static gboolean parse_usbredir_filter(const gchar *option_name,
return TRUE;
}
+static gboolean parse_preferred_compression(const gchar *option_name, const gchar *value,
+ gpointer data, GError **error)
+{
+ if (!strcmp(value, "auto-glz")) {
+ preferred_compression = SPICE_IMAGE_COMPRESS_AUTO_GLZ;
+ } else if (!strcmp(value, "auto-lz")) {
+ preferred_compression = SPICE_IMAGE_COMPRESS_AUTO_LZ;
+ } else if (!strcmp(value, "quic")) {
+ preferred_compression = SPICE_IMAGE_COMPRESS_QUIC;
+ } else if (!strcmp(value, "glz")) {
+ preferred_compression = SPICE_IMAGE_COMPRESS_GLZ;
+ } else if (!strcmp(value, "lz")) {
+ preferred_compression = SPICE_IMAGE_COMPRESS_LZ;
+#ifdef USE_LZ4
+ } else if (!strcmp(value, "lz4")) {
+ preferred_compression = SPICE_IMAGE_COMPRESS_LZ4;
+#endif
+ } else if (!strcmp(value, "off")) {
+ preferred_compression = SPICE_IMAGE_COMPRESS_OFF;
+ } else {
+ preferred_compression = SPICE_IMAGE_COMPRESS_INVALID;
+ g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED,
+ _("Image compression algorithm %s not supported"), value);
+ return FALSE;
+ }
+ return TRUE;
+}
/**
* spice_get_option_group: (skip)
@@ -194,6 +222,13 @@ GOptionGroup* spice_get_option_group(void)
N_("Glz compression history size"), N_("<bytes>") },
{ "spice-shared-dir", '\0', 0, G_OPTION_ARG_FILENAME, &shared_dir,
N_("Shared directory"), N_("<dir>") },
+ { "spice-preferred-compression", '\0', 0, G_OPTION_ARG_CALLBACK, parse_preferred_compression,
+ N_("Preferred image compression algorithm"),
+#ifdef USE_LZ4
+ "<auto-glz,auto-lz,quic,glz,lz,lz4,off>" },
+#else
+ "<auto-glz,auto-lz,quic,glz,lz,off>" },
+#endif
{ "spice-debug", '\0', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, option_debug,
N_("Enable Spice-GTK debugging"), NULL },
@@ -281,4 +316,6 @@ void spice_set_session_option(SpiceSession *session)
g_object_set(session, "glz-window-size", glz_window_size, NULL);
if (shared_dir)
g_object_set(session, "shared-dir", shared_dir, NULL);
+ if (preferred_compression != SPICE_IMAGE_COMPRESS_INVALID)
+ g_object_set(session, "preferred-compression", preferred_compression, NULL);
}