Skip to content

Commit 7aa9b7a

Browse files
committed
Fix brightness restore crash
On systems with no brightness control, such as an XO-1 with kernel 4.6-rc1 due to 82ef33af9dd30075adbd9f3dd161b606b8ba88ac, Sugar does crash on start with this shell.log fragment; Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/usr/lib/python2.7/site-packages/jarabe/main.py", line 428, in <module> main() File "/usr/lib/python2.7/site-packages/jarabe/main.py", line 410, in main brightness.get_instance() File "/usr/lib/python2.7/site-packages/jarabe/model/brightness.py", line 30, in get_instance _instance = Brightness() File "/usr/lib/python2.7/site-packages/jarabe/model/brightness.py", line 53, in __init__ self._restore() File "/usr/lib/python2.7/site-packages/jarabe/model/brightness.py", line 67, in _restore self.set_brightness(value) File "/usr/lib/python2.7/site-packages/jarabe/model/brightness.py", line 108, in set_brightness self._monitor.handler_block(self._monitor_changed_hid) AttributeError: 'NoneType' object has no attribute 'handler_block' Fix is to avoid dereferencing _monitor if it is None.
1 parent b0b8a04 commit 7aa9b7a

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/jarabe/model/brightness.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,17 +104,19 @@ def __save_timeout_cb(self, value):
104104

105105
def set_brightness(self, value):
106106
# do not monitor the external change we are about to trigger
107-
if self._monitor_timeout_id is None:
108-
self._monitor.handler_block(self._monitor_changed_hid)
107+
if self._monitor is not None:
108+
if self._monitor_timeout_id is None:
109+
self._monitor.handler_block(self._monitor_changed_hid)
109110

110111
self._helper_write('set-brightness', value)
111112
self.changed_signal.emit(value)
112113

113114
# do monitor again only after the rate has passed
114-
if self._monitor_timeout_id is not None:
115-
GLib.source_remove(self._monitor_timeout_id)
116-
self._monitor_timeout_id = GLib.timeout_add(
117-
self._MONITOR_RATE * 2, self.__monitor_timeout_cb)
115+
if self._monitor is not None:
116+
if self._monitor_timeout_id is not None:
117+
GLib.source_remove(self._monitor_timeout_id)
118+
self._monitor_timeout_id = GLib.timeout_add(
119+
self._MONITOR_RATE * 2, self.__monitor_timeout_cb)
118120

119121
# do not store every change while is still changing
120122
if self._save_timeout_id is not None:

0 commit comments

Comments
 (0)