diff options
author | Javier Celaya <javier.celaya@flexvdi.com> | 2015-06-03 16:58:18 +0200 |
---|---|---|
committer | Christophe Fergeau <cfergeau@redhat.com> | 2015-06-29 15:22:53 +0200 |
commit | f3803e0ad12f05b8f3da941c19cda3e153da1ea1 (patch) | |
tree | 0e393a3ccb2a2156ce494e72d581006ed85c87c7 | |
parent | 3910be9089e9af946d4bc79b7b8f25aff0c5d5c1 (diff) |
Add a preferred-compression program option
-rw-r--r-- | src/spice-option.c | 37 |
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); } |