@ -1411,13 +1411,15 @@ simple_heads_changed(struct wl_listener *listener, void *arg)
bool connected ;
bool connected ;
bool enabled ;
bool enabled ;
bool changed ;
bool changed ;
bool non_desktop ;
while ( ( head = weston_compositor_iterate_heads ( wet - > compositor , head ) ) ) {
while ( ( head = weston_compositor_iterate_heads ( wet - > compositor , head ) ) ) {
connected = weston_head_is_connected ( head ) ;
connected = weston_head_is_connected ( head ) ;
enabled = weston_head_is_enabled ( head ) ;
enabled = weston_head_is_enabled ( head ) ;
changed = weston_head_is_device_changed ( head ) ;
changed = weston_head_is_device_changed ( head ) ;
non_desktop = weston_head_is_non_desktop ( head ) ;
if ( connected & & ! enabled ) {
if ( connected & & ! enabled & & ! non_desktop ) {
simple_head_enable ( wet , head ) ;
simple_head_enable ( wet , head ) ;
} else if ( ! connected & & enabled ) {
} else if ( ! connected & & enabled ) {
simple_head_disable ( head ) ;
simple_head_disable ( head ) ;
@ -1715,14 +1717,16 @@ drm_head_prepare_enable(struct wet_compositor *wet,
section = drm_config_find_controlling_output_section ( wet - > config , name ) ;
section = drm_config_find_controlling_output_section ( wet - > config , name ) ;
if ( section ) {
if ( section ) {
/* skip outputs that are explicitly off, the backend turns
/* skip outputs that are explicitly off, or non-desktop and not
* them off automatically .
* explicitly enabled . The backend turns them off automatically .
*/
*/
weston_config_section_get_string ( section , " mode " , & mode , NULL ) ;
weston_config_section_get_string ( section , " mode " , & mode , NULL ) ;
if ( mode & & strcmp ( mode , " off " ) = = 0 ) {
if ( mode & & strcmp ( mode , " off " ) = = 0 ) {
free ( mode ) ;
free ( mode ) ;
return ;
return ;
}
}
if ( ! mode & & weston_head_is_non_desktop ( head ) )
return ;
free ( mode ) ;
free ( mode ) ;
weston_config_section_get_string ( section , " name " ,
weston_config_section_get_string ( section , " name " ,