summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/ardour_ui.cc5
-rw-r--r--gtk2_ardour/ardour_ui_options.cc14
-rw-r--r--gtk2_ardour/rc_option_editor.cc15
-rw-r--r--gtk2_ardour/ui_config_vars.h1
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)