<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;">On Saturday 17 January 2009 15:10:58 Peter Clifton wrote:<br>
> Ok, it looks like I was off-base on my diagnosis of an infinite loop.<br>
><br>
> It seems that gnome-power-manager may have been emitting a series of<br>
> very small changes in backlight brightness to cause a fading effect. The<br>
> fact that each triggered one (or more!) output probes meant that the<br>
> process took a very long time indeed!<br>
><br>
> Each change caused a notification from Xrandr, which all GDK using<br>
> applications then translated to a "monitors-changed" signal.<br>
><br>
> Interestingly, some people seeing the looping behaviour have reported it<br>
> as only occurring after an upgrade from libXrandr 1.2.3 to 1.2.99.2.<br>
> I've not had a lot of luck figuring out why this might be, but wonder if<br>
> the bug fixed during that period relating to a corrupt / unset "window"<br>
> property on the wire for some events, might have caused GTK to drop some<br>
> of those events in the past without handling them. (Just an untested<br>
> idea).<br>
><br>
> gnome-power-manager handles the "monitors-changed" signal by retrieving<br>
> information from Xrandr, causing a re-probe of outputs.<br>
><br>
> Patching GDK not to emit "monitors-changed" for output property<br>
> notifications causes the problem to go away as far as I can tell.<br>
><br>
> Now Xrandr 1.3 is available, on systems which have it,<br>
> gnome-power-manager should probably be calling<br>
> XRRGetScreenResourcesCurrent () in retaliation to notified events - at<br>
> the very least. (Not XRRGetScreenResources () as it currently uses)<br>
><br>
> Arguably, GDK shouldn't be generating a "monitors-changed" signal for an<br>
> output property change. The description of that signal states:<br>
><br>
> "The ::monitors-changed signal is emitted when the number, size or<br>
> position of the monitors attached to the screen change."<br>
><br>
> I presume output properties don't reflect any of the above changes?<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Using XRRGetScreenResourcesCurrent instead of XRRGetScreenResources in both gnome-desktop and gnome-power-manager solves the problem here (without having to patch GDK).<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Regards,<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Alberto Milone</p></body></html>