Workaround for issue 353 (broken xrandr) git-svn-id: http://tint2.googlecode.com/svn/trunk@663 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
o9000 o9000
1 files changed,
12 insertions(+),
0 deletions(-)
jump to
M
src/server.c
→
src/server.c
@@ -271,6 +271,18 @@ XRRScreenResources *res = XRRGetScreenResourcesCurrent(server.dsp, server.root_win);
if (res && res->ncrtc >= nbmonitor) { // use xrandr to identify monitors (does not work with proprietery nvidia drivers) + + // Workaround for issue https://code.google.com/p/tint2/issues/detail?id=353 + // on some recent configs, XRRGetScreenResourcesCurrent returns a fantom monitor at last position + { + int i = res->ncrtc - 1; + XRRCrtcInfo* crtc_info = XRRGetCrtcInfo(server.dsp, res, res->crtcs[i]); + if (!(crtc_info->x || crtc_info->y || crtc_info->width || crtc_info->height)) { + res->ncrtc -= 1; + } + XRRFreeCrtcInfo(crtc_info); + } + printf("xRandr: Found crtc's: %d\n", res->ncrtc ); server.monitor = malloc(res->ncrtc * sizeof(Monitor)); for (i=0; i<res->ncrtc; ++i) {