image-surface/software rendering as preference

This commit is contained in:
Robin Gareus 2015-09-07 13:35:11 +02:00
parent d6a5e6fc2e
commit c6e0c8430f
3 changed files with 30 additions and 3 deletions

View File

@ -21,6 +21,10 @@
#include "gtk2ardour-config.h"
#endif
#if !defined USE_CAIRO_IMAGE_SURFACE && !defined NDEBUG
#define OPTIONAL_CAIRO_IMAGE_SURFACE
#endif
#include <cairo/cairo.h>
#include <boost/algorithm/string.hpp>
@ -2776,18 +2780,31 @@ RCOptionEditor::RCOptionEditor ()
/* INTERFACE */
#ifdef OPTIONAL_CAIRO_IMAGE_SURFACE
BoolOption* bgo = new BoolOption (
"cairo-image-surface",
_("Disable Graphics Hardware Acceleration (requires restart)"),
sigc::mem_fun (*_ui_config, &UIConfiguration::get_cairo_image_surface),
sigc::mem_fun (*_ui_config, &UIConfiguration::set_cairo_image_surface)
);
Gtkmm2ext::UI::instance()->set_tip (bgo->tip_widget(), string_compose (
_("Render large parts of the application user-interface in software, instead of using 2D-graphics acceleration.\nThis requires restarting %1 before having an effect"), PROGRAM_NAME));
add_option (S_("Preferences|GUI"), bgo);
#endif
#ifdef CAIRO_SUPPORTS_FORCE_BUGGY_GRADIENTS_ENVIRONMENT_VARIABLE
BoolOption* bgo = new BoolOption (
"buggy-gradients",
_("Possibly improve slow graphical performance"),
_("Possibly improve slow graphical performance (requires restart)"),
sigc::mem_fun (*_ui_config, &UIConfiguration::get_buggy_gradients),
sigc::mem_fun (*_ui_config, &UIConfiguration::set_buggy_gradients)
);
Gtkmm2ext::UI::instance()->set_tip (bgo->tip_widget(), string_compose (_("This requires restarting %1 before having an effect"), PROGRAM_NAME));
Gtkmm2ext::UI::instance()->set_tip (bgo->tip_widget(), string_compose (_("Disables hardware gradient rendering on buggy video drivers (\"buggy gradients patch\").\nThis requires restarting %1 before having an effect"), PROGRAM_NAME));
add_option (S_("Preferences|GUI"), bgo);
#endif
add_option (S_("Preferences|GUI"),
new BoolOption (
"widget-prelight",

View File

@ -17,6 +17,10 @@
*/
#if !defined USE_CAIRO_IMAGE_SURFACE && !defined NDEBUG
#define OPTIONAL_CAIRO_IMAGE_SURFACE
#endif
#include <iostream>
#include <sstream>
#include <unistd.h>
@ -156,6 +160,11 @@ UIConfiguration::pre_gui_init ()
if (get_buggy_gradients()) {
g_setenv ("FORCE_BUGGY_GRADIENTS", "1", 1);
}
#endif
#ifdef OPTIONAL_CAIRO_IMAGE_SURFACE
if (get_cairo_image_surface()) {
g_setenv ("ARDOUR_IMAGE_SURFACE", "1", 1);
}
#endif
return 0;
}

View File

@ -72,4 +72,5 @@ UI_CONFIG_VARIABLE (double, waveform_clip_level, "waveform-clip-level", -0.09339
UI_CONFIG_VARIABLE (bool, hiding_groups_deactivates_groups, "hiding-groups-deactivates-groups", true)
UI_CONFIG_VARIABLE (bool, no_new_session_dialog, "no-new-session-dialog", false)
UI_CONFIG_VARIABLE (bool, buggy_gradients, "buggy-gradients", false)
UI_CONFIG_VARIABLE (bool, cairo_image_surface, "cairo-image-surface", false)
UI_CONFIG_VARIABLE (uint64_t, waveform_cache_size, "waveform-cache-size", 100) /* units of megagbytes */