Revision d1af0e05 ui/vnc-enc-zlib.c
b/ui/vnc-enc-zlib.c | ||
---|---|---|
47 | 47 |
|
48 | 48 |
static void vnc_zlib_start(VncState *vs) |
49 | 49 |
{ |
50 |
buffer_reset(&vs->zlib); |
|
50 |
buffer_reset(&vs->zlib.zlib);
|
|
51 | 51 |
|
52 | 52 |
// make the output buffer be the zlib buffer, so we can compress it later |
53 |
vs->zlib_tmp = vs->output;
|
|
54 |
vs->output = vs->zlib; |
|
53 |
vs->zlib.tmp = vs->output;
|
|
54 |
vs->output = vs->zlib.zlib;
|
|
55 | 55 |
} |
56 | 56 |
|
57 | 57 |
static int vnc_zlib_stop(VncState *vs) |
58 | 58 |
{ |
59 |
z_streamp zstream = &vs->zlib_stream;
|
|
59 |
z_streamp zstream = &vs->zlib.stream;
|
|
60 | 60 |
int previous_out; |
61 | 61 |
|
62 | 62 |
// switch back to normal output/zlib buffers |
63 |
vs->zlib = vs->output; |
|
64 |
vs->output = vs->zlib_tmp;
|
|
63 |
vs->zlib.zlib = vs->output;
|
|
64 |
vs->output = vs->zlib.tmp;
|
|
65 | 65 |
|
66 | 66 |
// compress the zlib buffer |
67 | 67 |
|
... | ... | |
75 | 75 |
zstream->zalloc = vnc_zlib_zalloc; |
76 | 76 |
zstream->zfree = vnc_zlib_zfree; |
77 | 77 |
|
78 |
err = deflateInit2(zstream, vs->tight_compression, Z_DEFLATED, MAX_WBITS,
|
|
78 |
err = deflateInit2(zstream, vs->tight.compression, Z_DEFLATED, MAX_WBITS,
|
|
79 | 79 |
MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY); |
80 | 80 |
|
81 | 81 |
if (err != Z_OK) { |
... | ... | |
83 | 83 |
return -1; |
84 | 84 |
} |
85 | 85 |
|
86 |
vs->zlib_level = vs->tight_compression;
|
|
86 |
vs->zlib.level = vs->tight.compression;
|
|
87 | 87 |
zstream->opaque = vs; |
88 | 88 |
} |
89 | 89 |
|
90 |
if (vs->tight_compression != vs->zlib_level) {
|
|
91 |
if (deflateParams(zstream, vs->tight_compression,
|
|
90 |
if (vs->tight.compression != vs->zlib.level) {
|
|
91 |
if (deflateParams(zstream, vs->tight.compression,
|
|
92 | 92 |
Z_DEFAULT_STRATEGY) != Z_OK) { |
93 | 93 |
return -1; |
94 | 94 |
} |
95 |
vs->zlib_level = vs->tight_compression;
|
|
95 |
vs->zlib.level = vs->tight.compression;
|
|
96 | 96 |
} |
97 | 97 |
|
98 | 98 |
// reserve memory in output buffer |
99 |
buffer_reserve(&vs->output, vs->zlib.offset + 64); |
|
99 |
buffer_reserve(&vs->output, vs->zlib.zlib.offset + 64);
|
|
100 | 100 |
|
101 | 101 |
// set pointers |
102 |
zstream->next_in = vs->zlib.buffer; |
|
103 |
zstream->avail_in = vs->zlib.offset; |
|
102 |
zstream->next_in = vs->zlib.zlib.buffer;
|
|
103 |
zstream->avail_in = vs->zlib.zlib.offset;
|
|
104 | 104 |
zstream->next_out = vs->output.buffer + vs->output.offset; |
105 | 105 |
zstream->avail_out = vs->output.capacity - vs->output.offset; |
106 | 106 |
zstream->data_type = Z_BINARY; |
... | ... | |
145 | 145 |
|
146 | 146 |
void vnc_zlib_clear(VncState *vs) |
147 | 147 |
{ |
148 |
if (vs->zlib_stream.opaque) {
|
|
149 |
deflateEnd(&vs->zlib_stream);
|
|
148 |
if (vs->zlib.stream.opaque) {
|
|
149 |
deflateEnd(&vs->zlib.stream);
|
|
150 | 150 |
} |
151 |
buffer_free(&vs->zlib); |
|
151 |
buffer_free(&vs->zlib.zlib);
|
|
152 | 152 |
} |
Also available in: Unified diff