Workaround for issue 353 (broken xrandr)

git-svn-id: http://tint2.googlecode.com/svn/trunk@663 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
o9000 2015-01-22 00:12:45 +00:00 committed by mrovi9000@gmail.com
parent c59f239999
commit b6efa12bef

View file

@ -271,6 +271,18 @@ void get_monitors()
if (res && res->ncrtc >= nbmonitor) { if (res && res->ncrtc >= nbmonitor) {
// use xrandr to identify monitors (does not work with proprietery nvidia drivers) // 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 ); printf("xRandr: Found crtc's: %d\n", res->ncrtc );
server.monitor = malloc(res->ncrtc * sizeof(Monitor)); server.monitor = malloc(res->ncrtc * sizeof(Monitor));
for (i=0; i<res->ncrtc; ++i) { for (i=0; i<res->ncrtc; ++i) {