diff options
author | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-02-28 16:34:57 +0100 |
---|---|---|
committer | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-02-28 16:34:57 +0100 |
commit | bf8e87bec12e6ec53ec2150d7a6f6d0e493c79ce (patch) | |
tree | 35f334042ce8db5158b1f72ca0fe55233ce5780f /same-android/src/main/java/com/orbekk/same/android | |
parent | 9635b25d879052210dc3cae314efad512c373c0a (diff) |
Fix concurrency problems.
– GameView should only draw on canvas from UI thread.
– ClientInterfaceBridge should not delete state after disconnect
(Because an update may be still waiting.)
– Send a Bundle in JOIN_NETWORK request to SameService.
Diffstat (limited to 'same-android/src/main/java/com/orbekk/same/android')
-rw-r--r-- | same-android/src/main/java/com/orbekk/same/android/ClientInterfaceBridge.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/same-android/src/main/java/com/orbekk/same/android/ClientInterfaceBridge.java b/same-android/src/main/java/com/orbekk/same/android/ClientInterfaceBridge.java index 8ed38a7..72dfdb7 100644 --- a/same-android/src/main/java/com/orbekk/same/android/ClientInterfaceBridge.java +++ b/same-android/src/main/java/com/orbekk/same/android/ClientInterfaceBridge.java @@ -36,7 +36,7 @@ public class ClientInterfaceBridge implements ClientInterface { private int nextOperationNumber = 0; class ResponseHandler extends Handler { - @Override public void handleMessage(Message message) { + @Override public synchronized void handleMessage(Message message) { if (serviceMessenger == null) { logger.warn("Ignoring message to disabled ResponseHandler."); return; @@ -119,7 +119,7 @@ public class ClientInterfaceBridge implements ClientInterface { this.context = context; } - public void connect() { + public synchronized void connect() { state = new State(".Temporary"); Intent intent = new Intent(context, SameService.class); context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE); @@ -135,11 +135,12 @@ public class ClientInterfaceBridge implements ClientInterface { } } - public void disconnect() { + public synchronized void disconnect() { if (serviceMessenger != null) { disconnectFromService(); + } + if (serviceConnection != null) { context.unbindService(serviceConnection); - state = null; } } |