X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgraphics%2Fx11%2Fdisplay.cpp;h=c2a4eaf26371d1a190f8051f9e198590192d95a4;hb=b1a6dffafa27d689389b512668fd5c34757dbd1d;hp=70b77c60ff6239c46041b2821a9c39777f6f0628;hpb=12df88ecf9787f4ed59051646775165b74301cf0;p=libs%2Fgui.git diff --git a/source/graphics/x11/display.cpp b/source/graphics/x11/display.cpp index 70b77c6..c2a4eaf 100644 --- a/source/graphics/x11/display.cpp +++ b/source/graphics/x11/display.cpp @@ -146,7 +146,7 @@ Display::Display(const string &disp_name): mode.index = modes.size(); mode.monitor = &monitor; mode.rate = info->dotClock/(info->hTotal*info->vTotal); - if(find_matching_mode(mode)) + if(find_mode(mode)) continue; modes.push_back(mode); @@ -208,7 +208,7 @@ Display::~Display() void Display::set_mode(const VideoMode &requested_mode, bool exclusive) { #ifdef WITH_XRANDR - const VideoMode *mode = find_matching_mode(requested_mode); + const VideoMode *mode = find_mode(requested_mode); if(!mode) throw unsupported_video_mode(requested_mode); @@ -300,6 +300,23 @@ void Display::set_mode(const VideoMode &requested_mode, bool exclusive) { 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;