From 67d054f32112d6386e7562c5acf69a8a02dd4cf3 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 16 Jan 2015 12:08:37 +0100 Subject: [PATCH] fix crash due to thread calling things it should not call. --- src/org/linphone/LinphoneManager.java | 2 +- src/org/linphone/UIThreadDispatcher.java | 2 +- src/org/linphone/gcm/GCMService.java | 13 +++++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index 5801e5312..8047283e4 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -459,7 +459,7 @@ public class LinphoneManager implements LinphoneListener { TimerTask lTask = new TimerTask() { @Override public void run() { - UIThreadDispatcher.Dispatch(new Runnable() { + UIThreadDispatcher.dispatch(new Runnable() { @Override public void run() { if (mLc != null) { diff --git a/src/org/linphone/UIThreadDispatcher.java b/src/org/linphone/UIThreadDispatcher.java index c0295c6ef..d2b419bdf 100644 --- a/src/org/linphone/UIThreadDispatcher.java +++ b/src/org/linphone/UIThreadDispatcher.java @@ -24,7 +24,7 @@ import android.os.Looper; public class UIThreadDispatcher { private static Handler mHandler = new Handler(Looper.getMainLooper()); - public static void Dispatch(Runnable r) { + public static void dispatch(Runnable r) { mHandler.post(r); } } diff --git a/src/org/linphone/gcm/GCMService.java b/src/org/linphone/gcm/GCMService.java index 1d83afa32..1018fb569 100644 --- a/src/org/linphone/gcm/GCMService.java +++ b/src/org/linphone/gcm/GCMService.java @@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import org.linphone.LinphoneManager; import org.linphone.LinphonePreferences; import org.linphone.R; +import org.linphone.UIThreadDispatcher; import org.linphone.mediastream.Log; import android.content.Context; @@ -47,8 +48,16 @@ public class GCMService extends GCMBaseIntentService { protected void onMessage(Context context, Intent intent) { Log.d("Push notification received"); if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() == 0) { - LinphoneManager.getLc().setNetworkReachable(false); - LinphoneManager.getLc().setNetworkReachable(true); + UIThreadDispatcher.dispatch(new Runnable(){ + @Override + public void run() { + if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() == 0){ + LinphoneManager.getLc().setNetworkReachable(false); + LinphoneManager.getLc().setNetworkReachable(true); + } + } + }); + } }