Lines Matching refs:os

68   zrleOutStream *os;
70 os = malloc(sizeof(zrleOutStream));
71 if (os == NULL)
74 if (!zrleBufferAlloc(&os->in, ZRLE_IN_BUFFER_SIZE)) {
75 free(os);
79 if (!zrleBufferAlloc(&os->out, ZRLE_OUT_BUFFER_SIZE)) {
80 zrleBufferFree(&os->in);
81 free(os);
85 os->zs.zalloc = Z_NULL;
86 os->zs.zfree = Z_NULL;
87 os->zs.opaque = Z_NULL;
88 if (deflateInit(&os->zs, Z_DEFAULT_COMPRESSION) != Z_OK) {
89 zrleBufferFree(&os->in);
90 free(os);
94 return os;
97 void zrleOutStreamFree (zrleOutStream *os)
99 deflateEnd(&os->zs);
100 zrleBufferFree(&os->in);
101 zrleBufferFree(&os->out);
102 free(os);
105 rfbBool zrleOutStreamFlush(zrleOutStream *os)
107 os->zs.next_in = os->in.start;
108 os->zs.avail_in = ZRLE_BUFFER_LENGTH (&os->in);
111 rfbLog("zrleOutStreamFlush: avail_in %d\n", os->zs.avail_in);
114 while (os->zs.avail_in != 0) {
118 if (os->out.ptr >= os->out.end &&
119 !zrleBufferGrow(&os->out, os->out.end - os->out.start)) {
124 os->zs.next_out = os->out.ptr;
125 os->zs.avail_out = os->out.end - os->out.ptr;
129 os->zs.avail_in, os->zs.avail_out);
132 if ((ret = deflate(&os->zs, Z_SYNC_FLUSH)) != Z_OK) {
139 os->zs.next_out - os->out.ptr);
142 os->out.ptr = os->zs.next_out;
143 } while (os->zs.avail_out == 0);
146 os->in.ptr = os->in.start;
151 static int zrleOutStreamOverrun(zrleOutStream *os,
158 while (os->in.end - os->in.ptr < size && os->in.ptr > os->in.start) {
159 os->zs.next_in = os->in.start;
160 os->zs.avail_in = ZRLE_BUFFER_LENGTH (&os->in);
165 if (os->out.ptr >= os->out.end &&
166 !zrleBufferGrow(&os->out, os->out.end - os->out.start)) {
171 os->zs.next_out = os->out.ptr;
172 os->zs.avail_out = os->out.end - os->out.ptr;
176 os->zs.avail_in, os->zs.avail_out);
179 if ((ret = deflate(&os->zs, 0)) != Z_OK) {
186 os->zs.next_out - os->out.ptr);
189 os->out.ptr = os->zs.next_out;
190 } while (os->zs.avail_out == 0);
194 if (os->zs.avail_in == 0) {
195 os->in.ptr = os->in.start;
201 memmove(os->in.start, os->zs.next_in, os->in.ptr - os->zs.next_in);
202 os->in.ptr -= os->zs.next_in - os->in.start;
206 if (size > os->in.end - os->in.ptr)
207 size = os->in.end - os->in.ptr;
212 static int zrleOutStreamCheck(zrleOutStream *os, int size)
214 if (os->in.ptr + size > os->in.end) {
215 return zrleOutStreamOverrun(os, size);
220 void zrleOutStreamWriteBytes(zrleOutStream *os,
226 int n = zrleOutStreamCheck(os, dataEnd - data);
227 memcpy(os->in.ptr, data, n);
228 os->in.ptr += n;
233 void zrleOutStreamWriteU8(zrleOutStream *os, zrle_U8 u)
235 zrleOutStreamCheck(os, 1);
236 *os->in.ptr++ = u;
239 void zrleOutStreamWriteOpaque8(zrleOutStream *os, zrle_U8 u)
241 zrleOutStreamCheck(os, 1);
242 *os->in.ptr++ = u;
245 void zrleOutStreamWriteOpaque16 (zrleOutStream *os, zrle_U16 u)
247 zrleOutStreamCheck(os, 2);
248 *os->in.ptr++ = ((zrle_U8*)&u)[0];
249 *os->in.ptr++ = ((zrle_U8*)&u)[1];
252 void zrleOutStreamWriteOpaque32 (zrleOutStream *os, zrle_U32 u)
254 zrleOutStreamCheck(os, 4);
255 *os->in.ptr++ = ((zrle_U8*)&u)[0];
256 *os->in.ptr++ = ((zrle_U8*)&u)[1];
257 *os->in.ptr++ = ((zrle_U8*)&u)[2];
258 *os->in.ptr++ = ((zrle_U8*)&u)[3];
261 void zrleOutStreamWriteOpaque24A(zrleOutStream *os, zrle_U32 u)
263 zrleOutStreamCheck(os, 3);
264 *os->in.ptr++ = ((zrle_U8*)&u)[0];
265 *os->in.ptr++ = ((zrle_U8*)&u)[1];
266 *os->in.ptr++ = ((zrle_U8*)&u)[2];
269 void zrleOutStreamWriteOpaque24B(zrleOutStream *os, zrle_U32 u)
271 zrleOutStreamCheck(os, 3);
272 *os->in.ptr++ = ((zrle_U8*)&u)[1];
273 *os->in.ptr++ = ((zrle_U8*)&u)[2];
274 *os->in.ptr++ = ((zrle_U8*)&u)[3];