Diff between 3f3152f15e31f25643f1be6495bd81eb510f2d0c and dee5bc60cbd51535f3cce43968e56b753723fb9b

Changed Files

File Additions Deletions Status
src/device.c +12 -9 modified

Full Patch

diff --git a/src/device.c b/src/device.c
index 90c4ab3..3f628a5 100644
--- a/src/device.c
+++ b/src/device.c
@@ -679,7 +679,10 @@ static gboolean dev_property_exists_rssi(const GDBusPropertyTable *property,
 {
 	struct btd_device *dev = data;
 
-	return dev->rssi ? TRUE : FALSE;
+	if (dev->rssi == 0)
+		return FALSE;
+
+	return TRUE;
 }
 
 static gboolean dev_property_get_trusted(const GDBusPropertyTable *property,
@@ -3398,7 +3401,14 @@ void device_set_rssi(struct btd_device *device, int8_t rssi)
 	if (!device)
 		return;
 
-	if (rssi < 0 && device->rssi < 0) {
+	if (rssi == 0 || device->rssi == 0) {
+		if (device->rssi == rssi)
+			return;
+
+		DBG("rssi %d", rssi);
+
+		device->rssi = rssi;
+	} else {
 		int delta;
 
 		if (device->rssi > rssi)
@@ -3413,13 +3423,6 @@ void device_set_rssi(struct btd_device *device, int8_t rssi)
 		DBG("rssi %d delta %d", rssi, delta);
 
 		device->rssi = rssi;
-	} else {
-		if (device->rssi == rssi)
-			return;
-
-		DBG("rssi %d", rssi);
-
-		device->rssi = rssi;
 	}
 
 	g_dbus_emit_property_changed(btd_get_dbus_connection(), device->path,