diff options
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_options.cc | 14 | ||||
-rw-r--r-- | gtk2_ardour/rc_option_editor.cc | 15 | ||||
-rw-r--r-- | gtk2_ardour/ui_config_vars.h | 1 |
4 files changed, 34 insertions, 1 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index d30b380270..71b7c80b9f 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -865,6 +865,8 @@ ARDOUR_UI::~ARDOUR_UI () { UIConfiguration::instance().save_state(); + ARDOUR_UI_UTILS::inhibit_screensaver (false); + stop_video_server(); if (getenv ("ARDOUR_RUNNING_UNDER_VALGRIND")) { @@ -2643,6 +2645,9 @@ ARDOUR_UI::map_transport_state () layered_button.set_sensitive (true); update_disk_space (); } + if (UIConfiguration::instance().get_screen_saver_mode () == InhibitWhileRecording) { + inhibit_screensaver (_session->actively_recording ()); + } } void diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index 491975fe98..4be71ebb97 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -475,8 +475,20 @@ ARDOUR_UI::parameter_changed (std::string p) } } else if ( (p == "snap-to-region-sync") || (p == "snap-to-region-start") || (p == "snap-to-region-end") ) { if (editor) editor->mark_region_boundary_cache_dirty(); + } else if (p == "screen-saver-mode") { + switch (UIConfiguration::instance().get_screen_saver_mode ()) { + using namespace ARDOUR_UI_UTILS; + case InhibitWhileRecording: + inhibit_screensaver (_session && _session->actively_recording ()); + break; + case InhibitAlways: + inhibit_screensaver (true); + break; + case InhibitNever: + inhibit_screensaver (false); + break; + } } - } void diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 4da9ed9a02..ca2d1c8d06 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -2223,6 +2223,21 @@ RCOptionEditor::RCOptionEditor () slts->tip_widget(), _("Lock GUI after this many idle seconds (zero to never lock)")); add_option (_("General"), slts); + + ComboOption<ScreenSaverMode>* scsvr = new ComboOption<ScreenSaverMode> ( + "screen-saver-mode", + _("System Screensaver Mode"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_screen_saver_mode), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_screen_saver_mode) + ); + + scsvr->add (InhibitNever, _("Never Inhibit")); + scsvr->add (InhibitWhileRecording, _("Inhibit while Recording")); + scsvr->add (InhibitAlways, string_compose (_("Inhibit while %1 is running"), PROGRAM_NAME)); + + add_option (_("General"), scsvr); + + } // !mixbus add_option (_("General/Session"), new OptionEditorHeading (S_("Options|Undo"))); diff --git a/gtk2_ardour/ui_config_vars.h b/gtk2_ardour/ui_config_vars.h index b5d01d50ac..a84241648d 100644 --- a/gtk2_ardour/ui_config_vars.h +++ b/gtk2_ardour/ui_config_vars.h @@ -42,6 +42,7 @@ UI_CONFIG_VARIABLE (bool, editor_stereo_only_meters, "editor-stereo-only-meters" #endif UI_CONFIG_VARIABLE (bool, show_waveform_clipping, "show-waveform-clipping", true) UI_CONFIG_VARIABLE (uint32_t, lock_gui_after_seconds, "lock-gui-after-seconds", 0) +UI_CONFIG_VARIABLE (ARDOUR::ScreenSaverMode, screen_saver_mode, "screen-saver-mode", InhibitWhileRecording) UI_CONFIG_VARIABLE (bool, draggable_playhead, "draggable-playhead", true) UI_CONFIG_VARIABLE (float, draggable_playhead_speed, "draggable-playhead-speed", 1.0) UI_CONFIG_VARIABLE (float, extra_ui_extents_time, "extra-ui-extents-time", 1.0) |