| 264 | private: |
| 265 | |
| 266 | void run(void) |
| 267 | { |
| 268 | int index = 0; Frame *frame = NULL; |
| 269 | try |
| 270 | { |
| 271 | while(!deadYet) |
| 272 | { |
| 273 | CompressedFrame &cframe = cframes[index]; |
| 274 | index = (index + 1) % NFRAMES; |
| 275 | cframe.waitUntilReady(); if(deadYet) break; |
| 276 | frame = blitter->get(); if(deadYet) break; |
| 277 | resizeWindow(dpy, win, cframe.hdr.width, cframe.hdr.height, myID); |
| 278 | if(frame->isGL) *((GLFrame *)frame) = cframe; |
| 279 | #ifdef USEXV |
| 280 | else if(frame->isXV) *((XVFrame *)frame) = cframe; |
| 281 | #endif |
| 282 | else *((FBXFrame *)frame) = cframe; |
| 283 | blitter->put(frame); |
| 284 | cframe.signalComplete(); |
| 285 | } |
| 286 | } |
| 287 | catch(std::exception &e) |
| 288 | { |
| 289 | if(thread) thread->setError(e); |
| 290 | for(int i = 0; i < NFRAMES; i++) cframes[i].signalComplete(); |
| 291 | throw; |
| 292 | } |
| 293 | fprintf(stderr, "Decompressor exiting ...\n"); |
| 294 | } |
| 295 | |
| 296 | Blitter *blitter; |
| 297 | int findex; bool deadYet; |
nothing calls this directly
no test coverage detected