Throw IllegalStateException if native objects are used after dispose.
This makes it easier to debug issues related to double dispose / use after dispose. Bug: webrtc:7566, webrtc:8297 Change-Id: I07429b2b794deabb62b5f3ea1cf92eea6f66a149 Reviewed-on: https://webrtc-review.googlesource.com/102540 Commit-Queue: Sami Kalliomäki <sakal@webrtc.org> Reviewed-by: Paulina Hensman <phensman@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24894}
This commit is contained in:
committed by
Commit Bot
parent
dca5a2ca73
commit
ee05e90297
@ -25,18 +25,33 @@ public class MediaSource {
|
||||
}
|
||||
}
|
||||
|
||||
final long nativeSource; // Package-protected for PeerConnectionFactory.
|
||||
private long nativeSource;
|
||||
|
||||
public MediaSource(long nativeSource) {
|
||||
this.nativeSource = nativeSource;
|
||||
}
|
||||
|
||||
public State state() {
|
||||
checkMediaSourceExists();
|
||||
return nativeGetState(nativeSource);
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
checkMediaSourceExists();
|
||||
JniCommon.nativeReleaseRef(nativeSource);
|
||||
nativeSource = 0;
|
||||
}
|
||||
|
||||
/** Returns a pointer to webrtc::MediaSourceInterface. */
|
||||
protected long getNativeMediaSource() {
|
||||
checkMediaSourceExists();
|
||||
return nativeSource;
|
||||
}
|
||||
|
||||
private void checkMediaSourceExists() {
|
||||
if (nativeSource == 0) {
|
||||
throw new IllegalStateException("MediaSource has been disposed.");
|
||||
}
|
||||
}
|
||||
|
||||
private static native State nativeGetState(long pointer);
|
||||
|
||||
Reference in New Issue
Block a user