… | |
… | |
166 | { |
166 | { |
167 | ++scrub_idx; |
167 | ++scrub_idx; |
168 | |
168 | |
169 | if (!faces_sent [scrub_idx]) |
169 | if (!faces_sent [scrub_idx]) |
170 | { |
170 | { |
171 | send_face (scrub_idx); |
171 | send_face (scrub_idx, -120); |
172 | flush_fx (); |
172 | flush_fx (); |
173 | |
173 | |
174 | bg_scrub = 1; // send up to one face per tick, unless an image was requested |
174 | bg_scrub = 1; // send up to one face per tick, unless an image was requested |
175 | break; |
175 | break; |
176 | } |
176 | } |
177 | } |
177 | } |
178 | |
178 | |
179 | rate_avail = max_rate - outputbuffer_len (); |
179 | rate_avail = max_rate - outputbuffer_len (); |
180 | } |
180 | } |
181 | else |
181 | else if (outq < 4096) // only send when bandwidth allows it. the 4k is completely arbitrary :( |
182 | { |
182 | { |
183 | int ol = outputbuffer_len (); |
183 | int ol = outputbuffer_len (); |
184 | |
184 | |
185 | rate_avail = min (max_rate, rate_avail + max_rate); |
185 | rate_avail = min (max_rate, rate_avail + max_rate); |
186 | rate_avail -= ol; |
186 | rate_avail -= ol; |
… | |
… | |
199 | |
199 | |
200 | if (facedata *d = face_data (ix.idx, faceset)) |
200 | if (facedata *d = face_data (ix.idx, faceset)) |
201 | { |
201 | { |
202 | if (fxix) |
202 | if (fxix) |
203 | { |
203 | { |
204 | // 9 bytes is enough for fx_FFFOOO, 240 leaves some room for image data |
204 | // only transfer something if the amount of data transferred |
|
|
205 | // has a healthy relation to the header overhead |
|
|
206 | if (avail <= 40) |
|
|
207 | break; |
|
|
208 | |
|
|
209 | // 9 bytes is enough for fx_FFFOOO |
205 | int chunk = min (min (avail - 240, MAXSOCKBUF - 9), ix.ofs); |
210 | int chunk = min (min (avail, MAXSOCKBUF - 9), (int)ix.ofs); |
206 | |
211 | |
207 | if (chunk <= 0) |
212 | if (chunk <= 0) |
208 | break; |
213 | break; |
209 | |
214 | |
210 | ix.ofs -= chunk; |
215 | ix.ofs -= chunk; |
|
|
216 | |
|
|
217 | //fprintf (stderr, "i%dx %6d: %5d+%4d (%4d)\n", fxix, ix.idx,ix.ofs,chunk, ixface.size());//D |
211 | |
218 | |
212 | packet sl ("ix"); |
219 | packet sl ("ix"); |
213 | |
220 | |
214 | sl << ber32 (ix.idx) |
221 | sl << ber32 (ix.idx) |
215 | << ber32 (ix.ofs) |
222 | << ber32 (ix.ofs) |