summaryrefslogtreecommitdiffstats
path: root/source/xfce/xfce4-settings/xfce.xfsettingsd.display.crtc.diff
diff options
context:
space:
mode:
Diffstat (limited to 'source/xfce/xfce4-settings/xfce.xfsettingsd.display.crtc.diff')
-rw-r--r--source/xfce/xfce4-settings/xfce.xfsettingsd.display.crtc.diff51
1 files changed, 51 insertions, 0 deletions
diff --git a/source/xfce/xfce4-settings/xfce.xfsettingsd.display.crtc.diff b/source/xfce/xfce4-settings/xfce.xfsettingsd.display.crtc.diff
new file mode 100644
index 000000000..73fc826be
--- /dev/null
+++ b/source/xfce/xfce4-settings/xfce.xfsettingsd.display.crtc.diff
@@ -0,0 +1,51 @@
+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,
+