mirror of
git://slackware.nl/current.git
synced 2025-01-14 08:01:11 +01:00
52 lines
2.4 KiB
Diff
52 lines
2.4 KiB
Diff
|
diff --git a/xfsettingsd/displays.c b/xfsettingsd/displays.c
|
||
|
index 095e323..af70256 100644
|
||
|
--- a/xfsettingsd/displays.c
|
||
|
+++ b/xfsettingsd/displays.c
|
||
|
@@ -415,6 +415,7 @@ xfce_displays_helper_screen_on_event (GdkXEvent *xevent,
|
||
|
XfceRROutput *output, *o;
|
||
|
XEvent *e = xevent;
|
||
|
gint event_num;
|
||
|
+ gint j;
|
||
|
guint n, m, nactive = 0;
|
||
|
gboolean found = FALSE, changed = FALSE;
|
||
|
|
||
|
@@ -496,9 +497,37 @@ xfce_displays_helper_screen_on_event (GdkXEvent *xevent,
|
||
|
{
|
||
|
xfsettings_dbg (XFSD_DEBUG_DISPLAYS, "New output connected: %s",
|
||
|
output->info->name);
|
||
|
+ /* need to enable crtc for output ? */
|
||
|
+ if (output->info->crtc == None)
|
||
|
+ {
|
||
|
+ xfsettings_dbg (XFSD_DEBUG_DISPLAYS, "enabling crtc for %s", output->info->name);
|
||
|
+ crtc = xfce_displays_helper_find_usable_crtc (helper, output);
|
||
|
+ if (crtc)
|
||
|
+ {
|
||
|
+ crtc->mode = output->preferred_mode;
|
||
|
+ crtc->rotation = RR_Rotate_0;
|
||
|
+ crtc->x = crtc->y = 0;
|
||
|
+ /* set width and height */
|
||
|
+ for (j = 0; j < helper->resources->nmode; ++j)
|
||
|
+ {
|
||
|
+ if (helper->resources->modes[j].id == output->preferred_mode)
|
||
|
+ {
|
||
|
+ crtc->width = helper->resources->modes[j].width;
|
||
|
+ crtc->height = helper->resources->modes[j].height;
|
||
|
+ break;
|
||
|
+ }
|
||
|
+ }
|
||
|
+ xfce_displays_helper_set_outputs (crtc, output);
|
||
|
+ crtc->changed = TRUE;
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
changed = TRUE;
|
||
|
}
|
||
|
}
|
||
|
+ if (changed)
|
||
|
+ xfce_displays_helper_apply_all (helper);
|
||
|
+
|
||
|
/* Start the minimal dialog according to the user preferences */
|
||
|
if (changed && xfconf_channel_get_bool (helper->channel, NOTIFY_PROP, FALSE))
|
||
|
xfce_spawn_command_line_on_screen (NULL, "xfce4-display-settings -m", FALSE,
|
||
|
|