aboutsummaryrefslogtreecommitdiffstats
path: root/android/hw-sensors.c
diff options
context:
space:
mode:
Diffstat (limited to 'android/hw-sensors.c')
-rw-r--r--android/hw-sensors.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/android/hw-sensors.c b/android/hw-sensors.c
index e191f68..c3ab12f 100644
--- a/android/hw-sensors.c
+++ b/android/hw-sensors.c
@@ -525,7 +525,7 @@ _hwSensors_load( QEMUFile* f, QemudService* s, void* opaque)
/* check number of sensors */
int32_t num_sensors = qemu_get_be32(f);
- if (num_sensors != MAX_SENSORS) {
+ if (num_sensors > MAX_SENSORS) {
D("%s: cannot load: snapshot requires %d sensors, %d available\n",
__FUNCTION__, num_sensors, MAX_SENSORS);
return -EIO;
@@ -533,7 +533,7 @@ _hwSensors_load( QEMUFile* f, QemudService* s, void* opaque)
/* load sensor state */
AndroidSensor i;
- for (i = 0 ; i < MAX_SENSORS; i++) {
+ for (i = 0 ; i < num_sensors; i++) {
Sensor* s = &h->sensors[i];
s->enabled = qemu_get_be32(f);
@@ -567,6 +567,14 @@ _hwSensors_load( QEMUFile* f, QemudService* s, void* opaque)
}
}
+ /* The following is necessary when we resume a snaphost
+ * created by an older version of the emulator that provided
+ * less hardware sensors.
+ */
+ for ( ; i < MAX_SENSORS; i++ ) {
+ h->sensors[i].enabled = 0;
+ }
+
return 0;
}