diff --git a/configure.ac b/configure.ac index 65b2bb0..8745f22 100644 --- a/configure.ac +++ b/configure.ac @@ -57,7 +57,9 @@ esac AC_DEFINE_CONF(CONF_PRIMUS_LD_PATH, [List of paths which are searched for the primus libGL.so.1 when using the primus bridge], [ if test "x" = "x$CONF_PRIMUS_LD_PATH"; then - CONF_PRIMUS_LD_PATH="/usr/lib/primus:/usr/lib32/primus" + # RR: Change for Ubuntu paths + # CONF_PRIMUS_LD_PATH="/usr/lib/primus:/usr/lib32/primus" + CONF_PRIMUS_LD_PATH="/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus" fi ]) @@ -70,20 +72,28 @@ fi AC_DEFINE_CONF(CONF_PM_METHOD, [Power management method, valid values are auto (default), bbswitch, switcheroo and none], [ case $CONF_PM_METHOD in auto|bbswitch|switcheroo|none) ;; -"") CONF_PM_METHOD=auto ;; +"") CONF_PM_METHOD=none ;; *) AC_MSG_ERROR([Invalid value for CONF_PM_METHOD]) ;; esac ]) AC_DEFINE_CONF(CONF_DRIVER, [default driver to use, valid values are nvidia, nouveau and an empty value (for autodetection, default)], [ case $CONF_DRIVER in -nvidia|nouveau|"") ;; +nvidia|nouveau) ;; +"") CONF_DRIVER=nvidia ;; *) AC_MSG_ERROR([Invalid value for CONF_DRIVER]) ;; esac ]) AC_DEFINE_CONF(CONF_DRIVER_MODULE_NVIDIA, [name of module for nvidia driver, i.e. the filename without .ko. If empty, "nvidia" is assumed]) -AC_DEFINE_CONF(CONF_LDPATH_NVIDIA, [Path to nvidia libraries for nvidia driver]) -AC_DEFINE_CONF(CONF_MODPATH_NVIDIA, [ModulePath for xorg modules when using nvidia driver]) + +AC_DEFINE_CONF(CONF_LDPATH_NVIDIA, [Path to nvidia libraries for nvidia driver], [ +CONF_LDPATH_NVIDIA=/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu +]) + +AC_DEFINE_CONF(CONF_MODPATH_NVIDIA, [ModulePath for xorg modules when using nvidia driver], +[ +CONF_MODPATH_NVIDIA=/usr/lib/x86_64-linux-gnu/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/xorg/modules/input +]) # non-config related compile-time defines AC_DEFINE(DAEMON_NAME, "bumblebeed", "daemon name") diff --git a/src/bbsecondary.c b/src/bbsecondary.c index 21b1e35..fffa689 100644 --- a/src/bbsecondary.c +++ b/src/bbsecondary.c @@ -88,6 +88,7 @@ static char *xorg_path_w_driver(char *x_conf_file, char *driver) { static bool switch_and_load(void) { char driver[BUFFER_SIZE] = {0}; + /* enable card if the switcher is available */ if (switcher) { if (switch_on() != SWITCH_ON) { @@ -227,8 +228,12 @@ static void switch_and_unload(void) char driver[BUFFER_SIZE]; if (bb_config.pm_method == PM_DISABLED && bb_status.runmode != BB_RUN_EXIT) { - /* do not disable the card if PM is disabled unless exiting */ - return; + /* RR: unload the driver loaded by the graphics card */ + bb_log(LOG_INFO, "PM disabled, unloading nvidia drivers anyway\n"); + if (pci_get_driver(driver, pci_bus_id_discrete, sizeof driver)) { + module_unload(driver); + } + return; } //if card is on and can be switched, switch it off