=== brainwash_ is now known as brainwash | ||
bluesabre | Unit193: would you be interested in sponsoring catfish 1.4.10 into debian? | 09:14 |
---|---|---|
Unit193 | Sure, anything else to add? | 09:15 |
Unit193 | (It's set to unreleased) | 09:15 |
bluesabre | Unit193: nope, should be ready to go otherwise | 09:18 |
Unit193 | OK, please commit and sign (perhaps after the ACK). I uploaded. | 09:21 |
bluesabre | Unit193: much appreciated! | 09:34 |
ali1234 | ochosi: i have 4.14.1 and it behaves exactly the same | 17:52 |
ali1234 | also still got the thing where only two of my monitors go to sleep | 17:55 |
ali1234 | if i do "xset dpms force off" then they all turn off | 17:56 |
ali1234 | i think this rules out cable problems | 17:56 |
ali1234 | although i notice there are three different levels: blank, sleep, off | 17:57 |
ali1234 | hmm... i set power saving like this https://imgur.com/yf7ppYE.png | 18:06 |
ali1234 | after 1 minute all monitors turn off, then 1 minute later one of them turns back on, then 1 minute later it turns off again | 18:06 |
ali1234 | i tried setting each setting to 1 minute and the others to never, in all three cases all monitors switched off | 18:14 |
ali1234 | it seems like whatever order the three settings are put in, the second one always causes 1 monitor to turn on | 18:17 |
ali1234 | i tried swapping the outputs around and the same monitor still turns on so maybe it is the cable | 18:18 |
ali1234 | "xset dpms force off && sleep 15s && xset dpms force off" does not make one monitor turn on though | 18:20 |
ali1234 | hmm power manager is just calling DPMSSetTimeouts so this cannot be an xfce bug | 18:32 |
ali1234 | yeah i reproduced it with just xset | 18:39 |
ali1234 | i read the product descriptions of these cables really carefully and it turns out the cable that works is bi-directional, the one that doesn't work properly is not | 19:29 |
ali1234 | i dont see why that would affect anything but i guess the not-bidirectional one is just rubbish | 19:29 |
ali1234 | okay, on to the other problem... if i kill xfsettings then my monitors dont all turn off when i unplug one, and it turns on again when i plug it back in | 21:08 |
ali1234 | and honestly this is how i want it to behave | 21:08 |
ali1234 | also i found that this problem only happens with 3 or more monitors so i suspect it actually is a bug | 21:09 |
ali1234 | ah, i think i found the problem | 21:15 |
ali1234 | if i unplug my middle monitor it doesn't happen | 21:15 |
ali1234 | he other two are identical | 21:15 |
ali1234 | how do i get xfsettingsd to print the debugs? | 21:21 |
ali1234 | ah i have to set an environment variable... okay | 21:26 |
ali1234 | hmm okay so xfsettngsd is going bananas - whenever the monitors change it tries to reconfigure every monitor about 4 times | 21:30 |
ochosi | ali1234: ok, so i tried to read carefully, but what was the remaining problem? something after killing xfsettingsd? | 22:38 |
ali1234 | the remaining problem is that when i unplug a monitor, xfsettings turns off all my monitors, permanently | 22:39 |
ochosi | that is very curious | 22:39 |
ochosi | i think i've never seen that at all so far | 22:39 |
ochosi | it has an extra check to never disable *all* monitors | 22:39 |
ochosi | so always at least one should remain, although that check may only be valid for laptops - would have to check in the code | 22:40 |
ali1234 | yeah none of that is what happens | 22:41 |
ochosi | just a debug idea, have you tried to save a profile for the two remaining monitors? | 22:41 |
ochosi | that way it should know what to do when you unplug | 22:41 |
ali1234 | what happens is it gets confused about what monitors are connected, then goes on a rampage disabling things, trying to re-enable things that no longer exist, and eventually just gives up when it has disabled everything | 22:41 |
ali1234 | this is the debug output after i unplugged one monitor: http://paste.ubuntu.com/p/mp36hM584M/ | 22:42 |
ali1234 | line 70 is where i plugged it back in, due to having a saved profile it eventually managed to restore the settings | 22:44 |
ochosi | and saving a profile for 2 monitors? | 22:48 |
ochosi | and yeah, urgh, doesnt look nice. i wonder though why it would fail to configure your monitors | 22:48 |
ali1234 | well it thinks the screen is 1280x176, which is too small for any of the monitors to fit on | 22:51 |
ochosi | that's what randr is telling it though | 22:53 |
ali1234 | i doubt that | 22:53 |
ochosi | well it surely doesn't invent the number :) | 22:53 |
ali1234 | right, it didn't. 176 is the vertical position of some of the monitors, not the height | 22:53 |
ali1234 | so somewhere there is a foo->y instead of foo->height or something | 22:54 |
ochosi | indeed helper->height seems to be off in your case | 22:58 |
ochosi | ok, so your analysis seems to match the code to some extent | 23:01 |
ochosi | it checks whether if any crtcs won't fit into the new screen and as the height is fairly low, it ends up disabling them all | 23:02 |
ochosi | and in xfce_displays_helper_set_screen_size your height seems to actually be helper->y | 23:03 |
ochosi | ali1234: would you mind adding this debug statement? http://dpaste.com/1F7QWWA | 23:06 |
ochosi | just to see if it all goes wrong in line 1267 of xfsettingsd/displays.c | 23:07 |
ali1234 | building it | 23:08 |
ochosi | helper->height should be set 0 before this function is called | 23:09 |
ali1234 | hang on let me log in to irc from my laptop | 23:09 |
ochosi | that's why i thought we probably don't need that value (and that's also in part what i don't understand about line 1267... cause 0 can hardly ever be MAX) | 23:09 |
ochosi | but then again, that code wasn't written by me and i have a hard time understanding some parts... | 23:11 |
ali1234 | size=433x3200, pos=1200x1280 | 23:14 |
ali1234 | wait | 23:15 |
ali1234 | you messed up the printf :) | 23:15 |
ali1234 | you have more arguments than formats | 23:15 |
ochosi | ah sure :) | 23:17 |
ochosi | i didn't test, sorry | 23:17 |
ali1234 | http://paste.ubuntu.com/p/n2YgbQgZHs/ | 23:17 |
ochosi | luckily that's easily fixable | 23:18 |
ali1234 | thats startup, before i do anything | 23:18 |
ali1234 | the numbers are right there | 23:18 |
ochosi | total screen size looks ok there | 23:18 |
ali1234 | http://paste.ubuntu.com/p/y9XHXsQJFZ/ then after unplug, the numbers are very wrong | 23:20 |
ochosi | i guess you can try to further debug line 1267 which (wrongly?) calculates height in your case | 23:22 |
ochosi | the problem is without being able to reproduce it's hard(er) | 23:22 |
ali1234 | okay i found something | 23:37 |
ali1234 | scalex and scaley are 0 | 23:37 |
ali1234 | so width * scale = 0 | 23:38 |
ali1234 | so helper->width becomes min(0, crtc->x) | 23:39 |
ali1234 | i think i see the problem | 23:43 |
ali1234 | when it starts up it loads all the properties from xfconf, including the scale | 23:43 |
ali1234 | when it gets a change event it rebuilds the randr cache but does not set the scale on the new objects | 23:44 |
ali1234 | if you have only onemonitor then it must be at pos=0,0 | 23:45 |
ali1234 | this results in helper thinking the screen is 0x0 | 23:45 |
ali1234 | there is probably a sanity check for this | 23:45 |
ali1234 | however if you have twomonitors then one of them is not at 0,0, the position of this monitor ends up being how big helper thinks the screen is | 23:45 |
ali1234 | this confuses it | 23:45 |
ali1234 | when there is a matching profile itgets the scale from the profile | 23:50 |
ali1234 | initializing the scale to 1.0 prevents it from doing weird stuff | 23:52 |
ochosi | sounds like a simple patch | 23:54 |
ali1234 | yeah. not sure if it is entirely correct though | 23:54 |
ali1234 | i'll make a bug report with the details | 23:54 |
ali1234 | when i get out from under my desk | 23:54 |
ochosi | in what sense? that you set the scale to 1.0 initially? | 23:54 |
ali1234 | brb | 23:55 |
ochosi | sure | 23:55 |
ali1234 | so the problem is that https://github.com/xfce-mirror/xfce4-settings/blob/master/xfsettingsd/displays.c#L1266 scalex = 0 | 23:56 |
ali1234 | scalex is initialized here https://github.com/xfce-mirror/xfce4-settings/blob/master/xfsettingsd/displays.c#L849 | 23:56 |
ali1234 | that code only runs when loading a profile | 23:57 |
ali1234 | the rest of the crtc is initialized here https://github.com/xfce-mirror/xfce4-settings/blob/master/xfsettingsd/displays.c#L1113 | 23:57 |
ali1234 | but not the scale | 23:57 |
ali1234 | so if there is no matching profile, you get scale = 0 | 23:57 |
ali1234 | that messes up all the calculations | 23:58 |
ali1234 | so the question is should list_crtcs initialize the scale to 1 | 23:58 |
ali1234 | or should it try to fetch the real scale, and if so, from where? | 23:58 |
ali1234 | now i write all this in a bug report :) | 23:58 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!