From bf8e87bec12e6ec53ec2150d7a6f6d0e493c79ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Tue, 28 Feb 2012 16:34:57 +0100 Subject: Fix concurrency problems. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit – 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. --- .../main/java/com/orbekk/same/android/ClientInterfaceBridge.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'same-android/src/main/java/com/orbekk/same/android') 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; } } -- cgit v1.2.3