Revision 9f04e09e ui/spice-core.c
b/ui/spice-core.c | ||
---|---|---|
137 | 137 |
.watch_remove = watch_remove, |
138 | 138 |
}; |
139 | 139 |
|
140 |
/* config string parsing */ |
|
141 |
|
|
142 |
static int name2enum(const char *string, const char *table[], int entries) |
|
143 |
{ |
|
144 |
int i; |
|
145 |
|
|
146 |
if (string) { |
|
147 |
for (i = 0; i < entries; i++) { |
|
148 |
if (!table[i]) { |
|
149 |
continue; |
|
150 |
} |
|
151 |
if (strcmp(string, table[i]) != 0) { |
|
152 |
continue; |
|
153 |
} |
|
154 |
return i; |
|
155 |
} |
|
156 |
} |
|
157 |
return -1; |
|
158 |
} |
|
159 |
|
|
160 |
static int parse_name(const char *string, const char *optname, |
|
161 |
const char *table[], int entries) |
|
162 |
{ |
|
163 |
int value = name2enum(string, table, entries); |
|
164 |
|
|
165 |
if (value != -1) { |
|
166 |
return value; |
|
167 |
} |
|
168 |
fprintf(stderr, "spice: invalid %s: %s\n", optname, string); |
|
169 |
exit(1); |
|
170 |
} |
|
171 |
|
|
172 |
static const char *compression_names[] = { |
|
173 |
[ SPICE_IMAGE_COMPRESS_OFF ] = "off", |
|
174 |
[ SPICE_IMAGE_COMPRESS_AUTO_GLZ ] = "auto_glz", |
|
175 |
[ SPICE_IMAGE_COMPRESS_AUTO_LZ ] = "auto_lz", |
|
176 |
[ SPICE_IMAGE_COMPRESS_QUIC ] = "quic", |
|
177 |
[ SPICE_IMAGE_COMPRESS_GLZ ] = "glz", |
|
178 |
[ SPICE_IMAGE_COMPRESS_LZ ] = "lz", |
|
179 |
}; |
|
180 |
#define parse_compression(_name) \ |
|
181 |
parse_name(_name, "image compression", \ |
|
182 |
compression_names, ARRAY_SIZE(compression_names)) |
|
183 |
|
|
184 |
static const char *wan_compression_names[] = { |
|
185 |
[ SPICE_WAN_COMPRESSION_AUTO ] = "auto", |
|
186 |
[ SPICE_WAN_COMPRESSION_NEVER ] = "never", |
|
187 |
[ SPICE_WAN_COMPRESSION_ALWAYS ] = "always", |
|
188 |
}; |
|
189 |
#define parse_wan_compression(_name) \ |
|
190 |
parse_name(_name, "wan compression", \ |
|
191 |
wan_compression_names, ARRAY_SIZE(wan_compression_names)) |
|
192 |
|
|
140 | 193 |
/* functions for the rest of qemu */ |
141 | 194 |
|
142 | 195 |
void qemu_spice_init(void) |
... | ... | |
150 | 203 |
*x509_cert_file = NULL, |
151 | 204 |
*x509_cacert_file = NULL; |
152 | 205 |
int port, tls_port, len; |
206 |
spice_image_compression_t compression; |
|
207 |
spice_wan_compression_t wan_compr; |
|
153 | 208 |
|
154 | 209 |
if (!opts) { |
155 | 210 |
return; |
... | ... | |
217 | 272 |
spice_server_set_noauth(spice_server); |
218 | 273 |
} |
219 | 274 |
|
220 |
/* TODO: make configurable via cmdline */ |
|
221 |
spice_server_set_image_compression(spice_server, SPICE_IMAGE_COMPRESS_AUTO_GLZ); |
|
275 |
compression = SPICE_IMAGE_COMPRESS_AUTO_GLZ; |
|
276 |
str = qemu_opt_get(opts, "image-compression"); |
|
277 |
if (str) { |
|
278 |
compression = parse_compression(str); |
|
279 |
} |
|
280 |
spice_server_set_image_compression(spice_server, compression); |
|
281 |
|
|
282 |
wan_compr = SPICE_WAN_COMPRESSION_AUTO; |
|
283 |
str = qemu_opt_get(opts, "jpeg-wan-compression"); |
|
284 |
if (str) { |
|
285 |
wan_compr = parse_wan_compression(str); |
|
286 |
} |
|
287 |
spice_server_set_jpeg_compression(spice_server, wan_compr); |
|
288 |
|
|
289 |
wan_compr = SPICE_WAN_COMPRESSION_AUTO; |
|
290 |
str = qemu_opt_get(opts, "zlib-glz-wan-compression"); |
|
291 |
if (str) { |
|
292 |
wan_compr = parse_wan_compression(str); |
|
293 |
} |
|
294 |
spice_server_set_zlib_glz_compression(spice_server, wan_compr); |
|
222 | 295 |
|
223 | 296 |
spice_server_init(spice_server, &core_interface); |
224 | 297 |
using_spice = 1; |
Also available in: Unified diff