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
@ -70,34 +70,52 @@ public class MediaStreamTrack {
|
||||
}
|
||||
}
|
||||
|
||||
final long nativeTrack;
|
||||
private long nativeTrack;
|
||||
|
||||
public MediaStreamTrack(long nativeTrack) {
|
||||
this.nativeTrack = nativeTrack;
|
||||
}
|
||||
|
||||
public String id() {
|
||||
checkMediaStreamTrackExists();
|
||||
return nativeGetId(nativeTrack);
|
||||
}
|
||||
|
||||
public String kind() {
|
||||
checkMediaStreamTrackExists();
|
||||
return nativeGetKind(nativeTrack);
|
||||
}
|
||||
|
||||
public boolean enabled() {
|
||||
checkMediaStreamTrackExists();
|
||||
return nativeGetEnabled(nativeTrack);
|
||||
}
|
||||
|
||||
public boolean setEnabled(boolean enable) {
|
||||
checkMediaStreamTrackExists();
|
||||
return nativeSetEnabled(nativeTrack, enable);
|
||||
}
|
||||
|
||||
public State state() {
|
||||
checkMediaStreamTrackExists();
|
||||
return nativeGetState(nativeTrack);
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
checkMediaStreamTrackExists();
|
||||
JniCommon.nativeReleaseRef(nativeTrack);
|
||||
nativeTrack = 0;
|
||||
}
|
||||
|
||||
long getNativeMediaStreamTrack() {
|
||||
checkMediaStreamTrackExists();
|
||||
return nativeTrack;
|
||||
}
|
||||
|
||||
private void checkMediaStreamTrackExists() {
|
||||
if (nativeTrack == 0) {
|
||||
throw new IllegalStateException("MediaStreamTrack has been disposed.");
|
||||
}
|
||||
}
|
||||
|
||||
private static native String nativeGetId(long track);
|
||||
|
||||
Reference in New Issue
Block a user