--- gnome-settings-daemon-2.31.6/plugins/xrandr/gsd-xrandr-manager.c 2010-08-02 17:54:13.000000000 -0400 +++ foo/plugins/xrandr/gsd-xrandr-manager.c 2010-08-27 14:48:39.506158001 -0400 @@ -684,6 +684,7 @@ /* Turn on the laptop, disable everything else */ GnomeRRConfig *result = gnome_rr_config_new_current (screen); int i; + gboolean all_off = TRUE; for (i = 0; result->outputs[i] != NULL; ++i) { GnomeOutputInfo *info = result->outputs[i]; @@ -694,12 +695,18 @@ result = NULL; break; } + all_off = FALSE; } else { info->on = FALSE; } } + if (all_off) { + gnome_rr_config_free (result); + result = NULL; + } + print_configuration (result, "Laptop setup"); /* FIXME - Maybe we should return NULL if there is more than @@ -751,6 +758,7 @@ static GnomeRRConfig * make_other_setup (GnomeRRScreen *screen) { + gboolean all_off = TRUE; /* Turn off all laptops, and make all external monitors clone * from (0, 0) */ @@ -765,11 +773,18 @@ info->on = FALSE; } else { - if (info->connected) + if (info->connected) { turn_on (screen, info, 0, 0); + all_off = FALSE; + } } } + if (all_off) { + gnome_rr_config_free (result); + result = NULL; + } + print_configuration (result, "other setup"); return result;