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
@ -12,7 +12,7 @@ package org.webrtc;
|
||||
|
||||
/** Java wrapper for a C++ DtmfSenderInterface. */
|
||||
public class DtmfSender {
|
||||
final long nativeDtmfSender;
|
||||
private long nativeDtmfSender;
|
||||
|
||||
public DtmfSender(long nativeDtmfSender) {
|
||||
this.nativeDtmfSender = nativeDtmfSender;
|
||||
@ -22,6 +22,7 @@ public class DtmfSender {
|
||||
* @return true if this DtmfSender is capable of sending DTMF. Otherwise false.
|
||||
*/
|
||||
public boolean canInsertDtmf() {
|
||||
checkDtmfSenderExists();
|
||||
return nativeCanInsertDtmf(nativeDtmfSender);
|
||||
}
|
||||
|
||||
@ -43,6 +44,7 @@ public class DtmfSender {
|
||||
* @return true on success and false on failure.
|
||||
*/
|
||||
public boolean insertDtmf(String tones, int duration, int interToneGap) {
|
||||
checkDtmfSenderExists();
|
||||
return nativeInsertDtmf(nativeDtmfSender, tones, duration, interToneGap);
|
||||
}
|
||||
|
||||
@ -50,6 +52,7 @@ public class DtmfSender {
|
||||
* @return The tones remaining to be played out
|
||||
*/
|
||||
public String tones() {
|
||||
checkDtmfSenderExists();
|
||||
return nativeTones(nativeDtmfSender);
|
||||
}
|
||||
|
||||
@ -58,6 +61,7 @@ public class DtmfSender {
|
||||
* insertDtmf() method, or the default value of 100 ms if insertDtmf() was never called.
|
||||
*/
|
||||
public int duration() {
|
||||
checkDtmfSenderExists();
|
||||
return nativeDuration(nativeDtmfSender);
|
||||
}
|
||||
|
||||
@ -67,11 +71,20 @@ public class DtmfSender {
|
||||
* called.
|
||||
*/
|
||||
public int interToneGap() {
|
||||
checkDtmfSenderExists();
|
||||
return nativeInterToneGap(nativeDtmfSender);
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
checkDtmfSenderExists();
|
||||
JniCommon.nativeReleaseRef(nativeDtmfSender);
|
||||
nativeDtmfSender = 0;
|
||||
}
|
||||
|
||||
private void checkDtmfSenderExists() {
|
||||
if (nativeDtmfSender == 0) {
|
||||
throw new IllegalStateException("DtmfSender has been disposed.");
|
||||
}
|
||||
}
|
||||
|
||||
private static native boolean nativeCanInsertDtmf(long dtmfSender);
|
||||
|
||||
Reference in New Issue
Block a user