void studio::Widget_Preview::set_preview(etl::handle<Preview> prev) { disconnect_preview(preview.get()); preview = prev; synfig::info("Setting preview"); //stop playing the mini animation... pause(); if(preview) { //set the internal values float rate = preview->get_fps(); jackdial->set_fps(rate); jackdial->set_offset(preview->get_jack_offset()); synfig::info(" FPS = %f",rate); if(rate) { float start = preview->get_begintime(); float end = preview->get_endtime(); rate = 1/rate; adj_time_scrub->set_lower(start); adj_time_scrub->set_upper(end); adj_time_scrub->set_value(start); adj_time_scrub->set_step_increment(rate); adj_time_scrub->set_page_increment(10*rate); //if the begin time and the end time are the same there is only a single frame singleframe = end==start; }else { adj_time_scrub->set_lower(0); adj_time_scrub->set_upper(0); adj_time_scrub->set_value(0); adj_time_scrub->set_step_increment(0); adj_time_scrub->set_page_increment(0); singleframe = true; } preview->get_canvas()->fill_sound_processor(soundProcessor); set_jack_enabled( preview && preview->get_canvasview()->get_jack_enabled_in_preview() ); //connect so future information will be found... prevchanged = prev->signal_changed().connect(sigc::mem_fun(*this,&Widget_Preview::whenupdated)); prev->signal_destroyed().connect(sigc::mem_fun(*this,&Widget_Preview::disconnect_preview)); update(); //synfig::warning("Did update sp"); queue_draw(); } }