virtual void end_frame() { #ifdef SINGLE_THREADED if (!single_threaded()) { #endif while(alive_flag) { Glib::Mutex::Lock lock(mutex); Glib::TimeVal end_time; end_time.assign_current_time(); end_time.add_microseconds(BOREDOM_TIMEOUT); if(!tile_queue.empty() && alive_flag) { if(cond_tile_queue_empty.timed_wait(mutex,end_time)) break; } else break; } #ifdef SINGLE_THREADED } #endif Glib::Mutex::Lock lock(mutex); if(!alive_flag) return; return warm_target->end_frame(); }