1
0
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:
James Cotton 2012-08-10 15:27:43 -05:00
parent de26c3297e
commit 1d361a53cd
3 changed files with 28 additions and 11 deletions

View File

@ -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);
}
}
}

View File

@ -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

View File

@ -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();