Loading media/java/android/media/AudioTrack.java +17 −30 Original line number Diff line number Diff line Loading @@ -158,16 +158,6 @@ public class AudioTrack * Lock to make sure mPlayState updates are reflecting the actual state of the object. */ private final Object mPlayStateLock = new Object(); /** * The listener the AudioTrack notifies when the playback position reaches a marker * or for periodic updates during the progression of the playback head. * @see #setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener) */ private OnPlaybackPositionUpdateListener mPositionListener = null; /** * Lock to protect event listener updates against event notifications. */ private final Object mPositionListenerLock = new Object(); /** * Size of the native audio buffer. */ Loading @@ -175,7 +165,7 @@ public class AudioTrack /** * Handler for marker events coming from the native code. */ private NativeEventHandlerDelegate mEventHandlerDelegate = null; private NativeEventHandlerDelegate mEventHandlerDelegate; /** * Looper associated with the thread that creates the AudioTrack instance. */ Loading Loading @@ -737,13 +727,11 @@ public class AudioTrack */ public void setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener listener, Handler handler) { synchronized (mPositionListenerLock) { mPositionListener = listener; } if (listener != null) { mEventHandlerDelegate = new NativeEventHandlerDelegate(this, handler); mEventHandlerDelegate = new NativeEventHandlerDelegate(this, listener, handler); } else { mEventHandlerDelegate = null; } } Loading Loading @@ -1149,11 +1137,11 @@ public class AudioTrack * (potentially) handled in a different thread */ private class NativeEventHandlerDelegate { private final AudioTrack mAudioTrack; private final Handler mHandler; NativeEventHandlerDelegate(AudioTrack track, Handler handler) { mAudioTrack = track; NativeEventHandlerDelegate(final AudioTrack track, final OnPlaybackPositionUpdateListener listener, Handler handler) { // find the looper for our new event handler Looper looper; if (handler != null) { Loading @@ -1169,22 +1157,18 @@ public class AudioTrack mHandler = new Handler(looper) { @Override public void handleMessage(Message msg) { if (mAudioTrack == null) { if (track == null) { return; } OnPlaybackPositionUpdateListener listener = null; synchronized (mPositionListenerLock) { listener = mAudioTrack.mPositionListener; } switch(msg.what) { case NATIVE_EVENT_MARKER: if (listener != null) { listener.onMarkerReached(mAudioTrack); listener.onMarkerReached(track); } break; case NATIVE_EVENT_NEW_POS: if (listener != null) { listener.onPeriodicNotification(mAudioTrack); listener.onPeriodicNotification(track); } break; default: Loading Loading @@ -1216,10 +1200,13 @@ public class AudioTrack return; } if (track.mEventHandlerDelegate != null) { Message m = track.mEventHandlerDelegate.getHandler().obtainMessage(what, arg1, arg2, obj); track.mEventHandlerDelegate.getHandler().sendMessage(m); NativeEventHandlerDelegate delegate = track.mEventHandlerDelegate; if (delegate != null) { Handler handler = delegate.getHandler(); if (handler != null) { Message m = handler.obtainMessage(what, arg1, arg2, obj); handler.sendMessage(m); } } } Loading Loading
media/java/android/media/AudioTrack.java +17 −30 Original line number Diff line number Diff line Loading @@ -158,16 +158,6 @@ public class AudioTrack * Lock to make sure mPlayState updates are reflecting the actual state of the object. */ private final Object mPlayStateLock = new Object(); /** * The listener the AudioTrack notifies when the playback position reaches a marker * or for periodic updates during the progression of the playback head. * @see #setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener) */ private OnPlaybackPositionUpdateListener mPositionListener = null; /** * Lock to protect event listener updates against event notifications. */ private final Object mPositionListenerLock = new Object(); /** * Size of the native audio buffer. */ Loading @@ -175,7 +165,7 @@ public class AudioTrack /** * Handler for marker events coming from the native code. */ private NativeEventHandlerDelegate mEventHandlerDelegate = null; private NativeEventHandlerDelegate mEventHandlerDelegate; /** * Looper associated with the thread that creates the AudioTrack instance. */ Loading Loading @@ -737,13 +727,11 @@ public class AudioTrack */ public void setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener listener, Handler handler) { synchronized (mPositionListenerLock) { mPositionListener = listener; } if (listener != null) { mEventHandlerDelegate = new NativeEventHandlerDelegate(this, handler); mEventHandlerDelegate = new NativeEventHandlerDelegate(this, listener, handler); } else { mEventHandlerDelegate = null; } } Loading Loading @@ -1149,11 +1137,11 @@ public class AudioTrack * (potentially) handled in a different thread */ private class NativeEventHandlerDelegate { private final AudioTrack mAudioTrack; private final Handler mHandler; NativeEventHandlerDelegate(AudioTrack track, Handler handler) { mAudioTrack = track; NativeEventHandlerDelegate(final AudioTrack track, final OnPlaybackPositionUpdateListener listener, Handler handler) { // find the looper for our new event handler Looper looper; if (handler != null) { Loading @@ -1169,22 +1157,18 @@ public class AudioTrack mHandler = new Handler(looper) { @Override public void handleMessage(Message msg) { if (mAudioTrack == null) { if (track == null) { return; } OnPlaybackPositionUpdateListener listener = null; synchronized (mPositionListenerLock) { listener = mAudioTrack.mPositionListener; } switch(msg.what) { case NATIVE_EVENT_MARKER: if (listener != null) { listener.onMarkerReached(mAudioTrack); listener.onMarkerReached(track); } break; case NATIVE_EVENT_NEW_POS: if (listener != null) { listener.onPeriodicNotification(mAudioTrack); listener.onPeriodicNotification(track); } break; default: Loading Loading @@ -1216,10 +1200,13 @@ public class AudioTrack return; } if (track.mEventHandlerDelegate != null) { Message m = track.mEventHandlerDelegate.getHandler().obtainMessage(what, arg1, arg2, obj); track.mEventHandlerDelegate.getHandler().sendMessage(m); NativeEventHandlerDelegate delegate = track.mEventHandlerDelegate; if (delegate != null) { Handler handler = delegate.getHandler(); if (handler != null) { Message m = handler.obtainMessage(what, arg1, arg2, obj); handler.sendMessage(m); } } } Loading