mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-03-16 08:29:15 +01:00
AndroidGCS Telemetry: Make sure when telemetry changes settings it removes it's
listeners before adding more
This commit is contained in:
parent
de26c3297e
commit
1d361a53cd
@ -313,26 +313,23 @@ public class Telemetry {
|
||||
while(li.hasNext())
|
||||
{
|
||||
obj = li.next();
|
||||
// TODO: Disconnect all previous observers from telemetry. This is imortant as this can
|
||||
|
||||
// Disconnect all previous observers from telemetry. This is imortant as this can
|
||||
// be called multiple times
|
||||
obj.removeUnpackedObserver(unpackedObserver);
|
||||
obj.removeUpdatedAutoObserver(updatedAutoObserver);
|
||||
obj.removeUpdatedManualObserver(updatedManualObserver);
|
||||
obj.removeUpdateRequestedObserver(updatedRequestedObserver);
|
||||
|
||||
// Connect only the selected events
|
||||
if ( (eventMask&EV_UNPACKED) != 0)
|
||||
{
|
||||
obj.addUnpackedObserver(unpackedObserver);
|
||||
}
|
||||
if ( (eventMask&EV_UPDATED) != 0)
|
||||
{
|
||||
obj.addUpdatedAutoObserver(updatedAutoObserver);
|
||||
}
|
||||
if ( (eventMask&EV_UPDATED_MANUAL) != 0)
|
||||
{
|
||||
obj.addUpdatedManualObserver(updatedManualObserver);
|
||||
}
|
||||
if ( (eventMask&EV_UPDATE_REQ) != 0)
|
||||
{
|
||||
obj.addUpdateRequestedObserver(updatedRequestedObserver);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -158,8 +158,8 @@ public class TelemetryMonitor extends Observable {
|
||||
if (DEBUG)
|
||||
Log.d(TAG, "All objects retrieved: Connected Successfully");
|
||||
objects_updated = true;
|
||||
setChanged();
|
||||
notifyObservers();
|
||||
//setChanged();
|
||||
//notifyObservers();
|
||||
return;
|
||||
}
|
||||
// Get next object from the queue
|
||||
|
@ -105,6 +105,11 @@ public abstract class UAVObject {
|
||||
unpackedListeners.addObserver(o);
|
||||
}
|
||||
}
|
||||
public void removeUnpackedObserver(Observer o) {
|
||||
synchronized(unpackedListeners) {
|
||||
unpackedListeners.deleteObserver(o);
|
||||
}
|
||||
}
|
||||
void unpacked() {
|
||||
synchronized(unpackedListeners) {
|
||||
unpackedListeners.event();
|
||||
@ -117,6 +122,11 @@ public abstract class UAVObject {
|
||||
updatedAutoListeners.addObserver(o);
|
||||
}
|
||||
}
|
||||
public void removeUpdatedAutoObserver(Observer o) {
|
||||
synchronized(updatedAutoListeners) {
|
||||
updatedAutoListeners.deleteObserver(o);
|
||||
}
|
||||
}
|
||||
void updatedAuto() {
|
||||
synchronized(updatedAutoListeners) {
|
||||
updatedAutoListeners.event();
|
||||
@ -129,6 +139,11 @@ public abstract class UAVObject {
|
||||
updatedManualListeners.addObserver(o);
|
||||
}
|
||||
}
|
||||
public void removeUpdatedManualObserver(Observer o) {
|
||||
synchronized(updatedManualListeners) {
|
||||
updatedManualListeners.deleteObserver(o);
|
||||
}
|
||||
}
|
||||
void updatedManual() {
|
||||
synchronized(updatedManualListeners) {
|
||||
updatedManualListeners.event();
|
||||
@ -141,6 +156,11 @@ public abstract class UAVObject {
|
||||
updateRequestedListeners.addObserver(o);
|
||||
}
|
||||
}
|
||||
public void removeUpdateRequestedObserver(Observer o) {
|
||||
synchronized(updateRequestedListeners) {
|
||||
updateRequestedListeners.deleteObserver(o);
|
||||
}
|
||||
}
|
||||
public void updateRequested() {
|
||||
synchronized(updateRequestedListeners) {
|
||||
updateRequestedListeners.event();
|
||||
|
Loading…
x
Reference in New Issue
Block a user