#ifndef GLIB_DISPATCHER_BROKEN
Glib::Dispatcher tile_ready_signal;
#endif
Glib::Cond cond_tile_queue_empty;
bool alive_flag;
#ifndef GLIB_DISPATCHER_BROKEN
Glib::Dispatcher tile_ready_signal;
#endif
Glib::Cond cond_tile_queue_empty;
bool alive_flag;
virtual Color * start_scanline(int scanline)
{
Glib::Mutex::Lock lock(mutex);
return surface[scanline];
}
virtual Color * start_scanline(int scanline)
{
Glib::Mutex::Lock lock(mutex);
return surface[scanline];
}
etl::handle<AsyncTarget_Tile> wrap_target(
new AsyncTarget_Tile(etl::handle<synfig::Target_Tile>::cast_dynamic(target_))
);
etl::handle<AsyncTarget_Tile> wrap_target(
new AsyncTarget_Tile(etl::handle<synfig::Target_Tile>::cast_dynamic(target_))
);
// Make sure all the dispatch crap is cleared out
//Glib::MainContext::get_default()->iteration(false);
// Make sure all the dispatch crap is cleared out
//Glib::MainContext::get_default()->iteration(false);
#ifndef GLIB_DISPATCHER_BROKEN
done_connection=signal_done_.connect(mem_fun(*this,&AsyncRenderer::stop));
#endif
#ifndef GLIB_DISPATCHER_BROKEN
done_connection=signal_done_.connect(mem_fun(*this,&AsyncRenderer::stop));
#endif
render_thread=Glib::Thread::create(
sigc::mem_fun(*this,&AsyncRenderer::render_target),
#if REJOIN_ON_STOP
render_thread=Glib::Thread::create(
sigc::mem_fun(*this,&AsyncRenderer::render_target),
#if REJOIN_ON_STOP