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