altoslib: Flush during set_state. Don't store listener state.
authorKeith Packard <keithp@keithp.com>
Sun, 1 May 2016 01:37:05 +0000 (18:37 -0700)
committerKeith Packard <keithp@keithp.com>
Sun, 1 May 2016 01:37:05 +0000 (18:37 -0700)
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 <keithp@keithp.com>
altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
altoslib/AltosPreferences.java

index 4b26d263509b18ff1cb3bc6dff49bf258ab74a07..7c5fde500aba3c5d3b935f28d4cdcb5c155e27c5 100644 (file)
@@ -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);
                        }
                }
        }
index cc340d0342ae8d1e9d8fd910a779dcc7f2876784..fb3026a4c0a55b2b8d5abe1aca145826fa1d4980 100644 (file)
@@ -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;
+                       }
                }
        }