From 59466c1c2dbf95c427c2bb52304049eaac4d124f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 30 Apr 2016 18:37:05 -0700 Subject: [PATCH] altoslib: Flush during set_state. Don't store listener state. The listener state wasn't used anyways, so don't bother storing it. Also, flush the state during set_state, which actually causes the state to be written out. Signed-off-by: Keith Packard --- .../AltosDroid/TelemetryService.java | 25 ++++++++----------- altoslib/AltosPreferences.java | 16 +++++++----- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index 4b26d263..7c5fde50 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -263,7 +263,7 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene telem.update_state(state); telemetry_state.states.put(telem.serial, state); if (state != null) { - AltosPreferences.set_state(telem.serial, state, null); + AltosPreferences.set_state(state); } send_to_clients(); } @@ -613,24 +613,21 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene telemetry_state.latest_serial = AltosPreferences.latest_state(); for (int serial : serials) { - AltosSavedState saved_state = AltosPreferences.state(serial); + AltosState saved_state = AltosPreferences.state(serial); if (saved_state != null) { - if (serial == 0) { - serial = saved_state.state.serial; - AltosPreferences.set_state(serial, saved_state.state, saved_state.listener_state); - AltosPreferences.remove_state(0); - } if (telemetry_state.latest_serial == 0) telemetry_state.latest_serial = serial; - AltosDebug.debug("recovered old state serial %d flight %d\n", + AltosDebug.debug("recovered old state serial %d flight %d", serial, - saved_state.state.flight); - if (saved_state.state.gps != null) - AltosDebug.debug("\tposition %f,%f\n", - saved_state.state.gps.lat, - saved_state.state.gps.lon); - telemetry_state.states.put(serial, saved_state.state); + saved_state.flight); + if (saved_state.gps != null) + AltosDebug.debug("\tposition %f,%f", + saved_state.gps.lat, + saved_state.gps.lon); + telemetry_state.states.put(serial, saved_state); + } else { + AltosDebug.debug("Failed to recover state for %d", serial); } } } diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index cc340d03..fb3026a4 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -350,12 +350,12 @@ public class AltosPreferences { } } - public static void set_state(int serial, AltosState state, AltosListenerState listener_state) { + public static void set_state(AltosState state) { synchronized(backend) { - backend.putSerializable(String.format(statePreferenceFormat, serial), - new AltosSavedState(state, listener_state)); - backend.putInt(statePreferenceLatest, serial); + backend.putSerializable(String.format(statePreferenceFormat, state.serial), state); + backend.putInt(statePreferenceLatest, state.serial); + flush_preferences(); } } @@ -389,9 +389,13 @@ public class AltosPreferences { return latest; } - public static AltosSavedState state(int serial) { + public static AltosState state(int serial) { synchronized(backend) { - return (AltosSavedState) backend.getSerializable(String.format(statePreferenceFormat, serial), null); + try { + return (AltosState) backend.getSerializable(String.format(statePreferenceFormat, serial), null); + } catch (Exception e) { + return null; + } } } -- 2.30.2