Loading core/java/com/android/internal/util/AsyncChannel.java +12 −7 Original line number Diff line number Diff line Loading @@ -768,9 +768,10 @@ public class AsyncChannel { /** Handle of the reply message */ @Override public void handleMessage(Message msg) { mResultMsg = Message.obtain(); mResultMsg.copyFrom(msg); Message msgCopy = Message.obtain(); msgCopy.copyFrom(msg); synchronized(mLockObject) { mResultMsg = msgCopy; mLockObject.notify(); } } Loading Loading @@ -812,22 +813,26 @@ public class AsyncChannel { */ private static Message sendMessageSynchronously(Messenger dstMessenger, Message msg) { SyncMessenger sm = SyncMessenger.obtain(); Message resultMsg = null; try { if (dstMessenger != null && msg != null) { msg.replyTo = sm.mMessenger; synchronized (sm.mHandler.mLockObject) { if (sm.mHandler.mResultMsg != null) { Slog.wtf(TAG, "mResultMsg should be null here"); sm.mHandler.mResultMsg = null; } dstMessenger.send(msg); sm.mHandler.mLockObject.wait(); } } else { resultMsg = sm.mHandler.mResultMsg; sm.mHandler.mResultMsg = null; } } } catch (InterruptedException e) { sm.mHandler.mResultMsg = null; Slog.e(TAG, "error in sendMessageSynchronously", e); } catch (RemoteException e) { sm.mHandler.mResultMsg = null; Slog.e(TAG, "error in sendMessageSynchronously", e); } Message resultMsg = sm.mHandler.mResultMsg; sm.recycle(); return resultMsg; } Loading Loading
core/java/com/android/internal/util/AsyncChannel.java +12 −7 Original line number Diff line number Diff line Loading @@ -768,9 +768,10 @@ public class AsyncChannel { /** Handle of the reply message */ @Override public void handleMessage(Message msg) { mResultMsg = Message.obtain(); mResultMsg.copyFrom(msg); Message msgCopy = Message.obtain(); msgCopy.copyFrom(msg); synchronized(mLockObject) { mResultMsg = msgCopy; mLockObject.notify(); } } Loading Loading @@ -812,22 +813,26 @@ public class AsyncChannel { */ private static Message sendMessageSynchronously(Messenger dstMessenger, Message msg) { SyncMessenger sm = SyncMessenger.obtain(); Message resultMsg = null; try { if (dstMessenger != null && msg != null) { msg.replyTo = sm.mMessenger; synchronized (sm.mHandler.mLockObject) { if (sm.mHandler.mResultMsg != null) { Slog.wtf(TAG, "mResultMsg should be null here"); sm.mHandler.mResultMsg = null; } dstMessenger.send(msg); sm.mHandler.mLockObject.wait(); } } else { resultMsg = sm.mHandler.mResultMsg; sm.mHandler.mResultMsg = null; } } } catch (InterruptedException e) { sm.mHandler.mResultMsg = null; Slog.e(TAG, "error in sendMessageSynchronously", e); } catch (RemoteException e) { sm.mHandler.mResultMsg = null; Slog.e(TAG, "error in sendMessageSynchronously", e); } Message resultMsg = sm.mHandler.mResultMsg; sm.recycle(); return resultMsg; } Loading