summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorMartijn Coenen <maco@google.com>2012-10-25 20:49:48 -0700
committerMartijn Coenen <maco@google.com>2012-10-25 20:51:05 -0700
commit1a6bcf3cca90fedfbad33c1cdd6d05af5774fc01 (patch)
tree9ba23ea50f82859870627189466c72574530ab7e /src/com
parent5cd1d0c05c257bf8004594bdfd1e6b0e9c95428d (diff)
downloadpackages_apps_nfc-1a6bcf3cca90fedfbad33c1cdd6d05af5774fc01.zip
packages_apps_nfc-1a6bcf3cca90fedfbad33c1cdd6d05af5774fc01.tar.gz
packages_apps_nfc-1a6bcf3cca90fedfbad33c1cdd6d05af5774fc01.tar.bz2
Serialize applying card emulation route.
Instead of immediately applying the routing, serialze the request with any outstanding commands (including NFC enable/disable). This prevents race conditions when NFC is being disabled and the card emu routing gets changed at the same time. Wait until the AsyncTask is complete, to make sure that the routing is applied (if possible) by the time the call returns. Bug: 7418238 Change-Id: I7d92533179c02f4b6b01a86967737e64532317a1
Diffstat (limited to 'src/com')
-rwxr-xr-xsrc/com/android/nfc/NfcService.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
index 551469d..d63f84f 100755
--- a/src/com/android/nfc/NfcService.java
+++ b/src/com/android/nfc/NfcService.java
@@ -1403,7 +1403,16 @@ public class NfcService implements DeviceHostListener {
public void setCardEmulationRoute(String pkg, int route) throws RemoteException {
NfcService.this.enforceNfceeAdminPerm(pkg);
mEeRoutingState = route;
- applyRouting(true);
+ ApplyRoutingTask applyRoutingTask = new ApplyRoutingTask();
+ applyRoutingTask.execute();
+ try {
+ // Block until route is set
+ applyRoutingTask.get();
+ } catch (ExecutionException e) {
+ Log.e(TAG, "failed to set card emulation mode");
+ } catch (InterruptedException e) {
+ Log.e(TAG, "failed to set card emulation mode");
+ }
}
@Override