Skip to content

Commit

Permalink
Remember jack state for preview
Browse files Browse the repository at this point in the history
  • Loading branch information
blackwarthog authored and morevnaproject committed Apr 1, 2015
1 parent c4ee3e2 commit d7a6f37
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 7 deletions.
1 change: 1 addition & 0 deletions synfig-studio/src/gui/canvasview.cpp
Expand Up @@ -696,6 +696,7 @@ CanvasView::CanvasView(etl::loose_handle<Instance> instance,etl::handle<synfigap
jack_enabled (false),
jack_actual_enabled (false),
jack_locks (0),
jack_enabled_in_preview (false),
#ifdef WITH_JACK
jack_client (NULL),
jack_synchronizing (true),
Expand Down
3 changes: 3 additions & 0 deletions synfig-studio/src/gui/canvasview.h
Expand Up @@ -431,6 +431,7 @@ class CanvasView : public Dockable, public etl::shared_object
bool jack_enabled;
bool jack_actual_enabled;
int jack_locks;
bool jack_enabled_in_preview;
#ifdef WITH_JACK
Glib::Dispatcher jack_dispatcher;
jack_client_t *jack_client;
Expand Down Expand Up @@ -566,6 +567,8 @@ class CanvasView : public Dockable, public etl::shared_object
bool jack_is_locked() const { return jack_locks > 0; }
void jack_lock();
void jack_unlock();
bool get_jack_enabled_in_preview() const { return jack_enabled_in_preview; }
void set_jack_enabled_in_preview(bool x) { jack_enabled_in_preview = x; }
#ifdef WITH_JACK
bool get_jack_enabled() const { return jack_enabled; }
bool get_jack_actual_enabled() const { return jack_actual_enabled; }
Expand Down
9 changes: 7 additions & 2 deletions synfig-studio/src/gui/dialogs/dialog_preview.cpp
Expand Up @@ -87,11 +87,16 @@ void Dialog_Preview::set_preview(etl::handle<Preview> prev)
//preview.update();
}

void Dialog_Preview::on_show()
{
Window::on_show();
preview.on_show();
}

void Dialog_Preview::on_hide()
{
Window::on_hide();
preview.pause();
preview.stoprender();
preview.on_hide();
}

//press escape key to close window
Expand Down
1 change: 1 addition & 0 deletions synfig-studio/src/gui/dialogs/dialog_preview.h
Expand Up @@ -68,6 +68,7 @@ class Dialog_Preview : public Gtk::Window
Widget_Preview &get_widget() {return preview;}
const Widget_Preview &get_widget() const {return preview;}

virtual void on_show();
virtual void on_hide();
//other forwarding functions...

Expand Down
33 changes: 28 additions & 5 deletions synfig-studio/src/gui/preview.cpp
Expand Up @@ -608,7 +608,7 @@ Widget_Preview::Widget_Preview():

studio::Widget_Preview::~Widget_Preview()
{
set_jack_enabled(false);
clear();
}

void studio::Widget_Preview::update()
Expand Down Expand Up @@ -949,12 +949,13 @@ void studio::Widget_Preview::disconnect_preview(Preview *prev)
{
preview = 0;
prevchanged.disconnect();
soundProcessor.clear();
}
}

void studio::Widget_Preview::set_preview(etl::handle<Preview> prev)
{
soundProcessor.clear();
disconnect_preview(preview.get());

preview = prev;

Expand Down Expand Up @@ -996,6 +997,7 @@ void studio::Widget_Preview::set_preview(etl::handle<Preview> prev)
}

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));
Expand All @@ -1016,9 +1018,8 @@ void studio::Widget_Preview::whenupdated()

void studio::Widget_Preview::clear()
{
preview = 0;
prevchanged.disconnect();
soundProcessor.clear();
disconnect_preview(preview.get());
set_jack_enabled(false);
}

void studio::Widget_Preview::play()
Expand Down Expand Up @@ -1348,8 +1349,28 @@ Widget_Preview::is_time_equal_to_current_frame(const synfig::Time &time)
return t0.is_equal(t1);
}

void Widget_Preview::on_show()
{
Table::on_show();
set_jack_enabled( preview && preview->get_canvasview()->get_jack_enabled_in_preview() );
}

void Widget_Preview::on_hide()
{
Table::on_hide();
if (preview)
{
bool enabled = get_jack_enabled();
set_jack_enabled(false);
preview->get_canvasview()->set_jack_enabled_in_preview(enabled);
}
pause();
stoprender();
}

void Widget_Preview::set_jack_enabled(bool value) {
if (jack_enabled == value) return;

#ifdef WITH_JACK
if (playing) pause();
jack_enabled = value;
Expand Down Expand Up @@ -1418,6 +1439,8 @@ void Widget_Preview::set_jack_enabled(bool value) {
offset_widget->hide();
}
#endif

if (preview) preview->get_canvasview()->set_jack_enabled_in_preview( get_jack_enabled() );
}


Expand Down
3 changes: 3 additions & 0 deletions synfig-studio/src/gui/preview.h
Expand Up @@ -285,6 +285,9 @@ class Widget_Preview : public Gtk::Table
bool get_loop_flag() const {return b_loop.get_active();}
void set_loop_flag(bool b) {return b_loop.set_active(b);}

virtual void on_show();
virtual void on_hide();

protected:

class ModelColumns : public Gtk::TreeModel::ColumnRecord
Expand Down

0 comments on commit d7a6f37

Please sign in to comment.