aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-04-10 20:35:47 +0200
committerMattias Andrée <maandree@operamail.com>2014-04-10 20:35:47 +0200
commit8a19181847254ab3add8f89541329262d52caa8e (patch)
tree25176de7d5fe11f32505c0d49f17d966b546c657
parenttypo (diff)
downloadnightshift-8a19181847254ab3add8f89541329262d52caa8e.tar.gz
nightshift-8a19181847254ab3add8f89541329262d52caa8e.tar.bz2
nightshift-8a19181847254ab3add8f89541329262d52caa8e.tar.xz
update status atomically
Signed-off-by: Mattias Andrée <maandree@operamail.com>
-rwxr-xr-xsrc/nightshift.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/nightshift.py b/src/nightshift.py
index 7a1e36e..6cc4473 100755
--- a/src/nightshift.py
+++ b/src/nightshift.py
@@ -211,13 +211,15 @@ def read_status(proc):
global red_brightnesses, red_temperatures
global red_period, red_location
global red_status, red_running
+ released = True
while True:
got = proc.stdout.readline()
if (got is None) or (len(got) == 0):
break
got = got.decode('utf-8', 'replace')[:-1]
(key, value) = got.split(': ')
- red_condition.aquire()
+ if released:
+ red_condition.aquire()
try:
if key == 'Location':
red_location = [float(v) for v in value.split(', ')]
@@ -241,16 +243,19 @@ def read_status(proc):
red_brightnesses = [float(v) for v in value.split(':')]
else:
red_brightness = float(value)
- # Neither version is followed by anything, notify
- red_condition.notify_all()
+ # Neither version is followed by anything, notify and release
+ released = True
elif key == 'Status':
red_status = value == 'Enabled'
- # Not followed by anything, notify
+ # Not followed by anything, notify and release
+ released = True
+ if released:
red_condition.notify_all()
+ red_condition.release()
except:
pass
- red_condition.release()
- red_condition.aquire()
+ if released:
+ red_condition.aquire()
red_running = False
red_condition.notify_all()
red_condition.release()