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:
parent
c59f239999
commit
b6efa12bef
1 changed files with 12 additions and 0 deletions
12
src/server.c
12
src/server.c
|
@ -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) {
|
||||||
|
|
Loading…
Reference in a new issue