- XRRSetCrtcConfig(priv->display, res, crtc, CurrentTime, x, y, priv->modes[mode->index], rotation_to_sys(requested_rotation), &output, 1);
-
- list<Monitor>::iterator i;
- for(i=monitors.begin(); i!=monitors.end(); ++i)
- if(&*i==mode->monitor)
- {
- i->current_mode = mode;
- i->current_rotation = requested_rotation;
- i->x = x;
- i->y = y;
-
- x += mode_width(*mode, requested_rotation);
- ++i;
- break;
- }
-
- for(; i!=monitors.end(); ++i)
- if(i->current_mode)
- {
- XRROutputInfo *o = XRRGetOutputInfo(priv->display, res, priv->monitors[i->index]);
- XRRSetCrtcConfig(priv->display, res, o->crtc, CurrentTime, x, y, priv->modes[i->current_mode->index], rotation_to_sys(i->current_rotation), &priv->monitors[i->index], 1);
-
- XRRPanning panning;
- panning.timestamp = CurrentTime;
- panning.left = x;
- panning.top = y;
- panning.width = i->current_mode->width;
- panning.height = i->current_mode->height;
- panning.track_left = panning.left;
- panning.track_top = panning.top;
- panning.track_width = panning.width;
- panning.track_height = panning.height;
- panning.border_left = 0;
- panning.border_top = 0;
- panning.border_right = 0;
- panning.border_bottom = 0;
- XRRSetPanning(priv->display, res, o->crtc, &panning);
-
- XRRFreeOutputInfo(o);
-
- i->x = x;
- i->y = y;
-
- x += mode_width(*i->current_mode, i->current_rotation);
- }
+ RRMode mode_id = priv->modes[mode->index];
+ int x = monitor->current_settings.x;
+ int y = monitor->current_settings.y;
+ Rotation sys_rot = rotation_to_sys(requested_rotation);
+ XRRSetCrtcConfig(priv->display, res, crtc, CurrentTime, x, y, mode_id, sys_rot, &output, 1);