From 28f7bdeede8609b365219caf6e998f3e31905d5f Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Wed, 11 Mar 2015 17:57:32 -0700 Subject: Delay 5 seconds to remove DLNA target in case it is just a temporary glitch --- .../dsub/provider/DLNARouteProvider.java | 25 ++++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'src/github/daneren2005') diff --git a/src/github/daneren2005/dsub/provider/DLNARouteProvider.java b/src/github/daneren2005/dsub/provider/DLNARouteProvider.java index 8d9c5f45..54c9ffb5 100644 --- a/src/github/daneren2005/dsub/provider/DLNARouteProvider.java +++ b/src/github/daneren2005/dsub/provider/DLNARouteProvider.java @@ -68,6 +68,7 @@ public class DLNARouteProvider extends MediaRouteProvider { private HashMap devices = new HashMap(); private List adding = new ArrayList(); + private List removing = new ArrayList(); private AndroidUpnpService dlnaService; private ServiceConnection dlnaServiceConnection; private boolean searchOnConnect = false; @@ -215,6 +216,11 @@ public class DLNARouteProvider extends MediaRouteProvider { if(adding.contains(id)) { return; } + // Just a temp disconnect, already have it's info + if(removing.contains(id)) { + removing.remove(id); + return; + } adding.add(id); if(device.getType().getType().equals("MediaRenderer") && device instanceof RemoteDevice) { @@ -261,16 +267,21 @@ public class DLNARouteProvider extends MediaRouteProvider { } private void deviceRemoved(Device device) { if(device.getType().getType().equals("MediaRenderer") && device instanceof RemoteDevice) { - String id = device.getIdentity().getUdn().toString(); - devices.remove(id); - - // Make sure we do this on the main thread - downloadService.post(new Runnable() { + final String id = device.getIdentity().getUdn().toString(); + removing.add(id); + + // Delay removal for a few seconds to make sure that it isn't just a temp disconnect + dlnaService.getControlPoint().search(); + downloadService.postDelayed(new Runnable() { @Override public void run() { - broadcastDescriptors(); + if(removing.contains(id)) { + devices.remove(id); + removing.remove(id); + broadcastDescriptors(); + } } - }); + }, 5000L); } } -- cgit v1.2.3