Grant that same result is never processed twice by the same listener (one through callback, one through getResult)

This commit is contained in:
masensio 2014-04-03 17:24:03 +02:00
parent b017073e96
commit 40f5eb6de6

View file

@ -443,12 +443,11 @@ public class OperationsService extends Service {
} finally { } finally {
synchronized(mPendingOperations) { synchronized(mPendingOperations) {
mPendingOperations.poll(); mPendingOperations.poll();
mOperationResults.put(mCurrentOperation.hashCode(), result);
} }
} }
//sendBroadcastOperationFinished(mLastTarget, mCurrentOperation, result); //sendBroadcastOperationFinished(mLastTarget, mCurrentOperation, result);
callbackOperationListeners(mLastTarget, mCurrentOperation, result); dispatchOperationListeners(mLastTarget, mCurrentOperation, result);
} }
} }
@ -506,7 +505,7 @@ public class OperationsService extends Service {
* @param operation Finished operation. * @param operation Finished operation.
* @param result Result of the operation. * @param result Result of the operation.
*/ */
private void callbackOperationListeners( private void dispatchOperationListeners(
Target target, final RemoteOperation operation, final RemoteOperationResult result) { Target target, final RemoteOperation operation, final RemoteOperationResult result) {
int count = 0; int count = 0;
Iterator<OnRemoteOperationListener> listeners = mBinder.mBoundListeners.keySet().iterator(); Iterator<OnRemoteOperationListener> listeners = mBinder.mBoundListeners.keySet().iterator();
@ -523,6 +522,9 @@ public class OperationsService extends Service {
count += 1; count += 1;
} }
} }
if (count == 0) {
mOperationResults.put(operation.hashCode(), result);
}
Log_OC.d(TAG, "Called " + count + " listeners"); Log_OC.d(TAG, "Called " + count + " listeners");
} }