Crash fixes

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/ui/XmppFragment.java           |  4 
src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java | 11 
2 files changed, 10 insertions(+), 5 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/XmppFragment.java 🔗

@@ -79,7 +79,9 @@ public abstract class XmppFragment extends Fragment implements OnBackendConnecte
 	@Override
 	public void onDestroy() {
 		if (lifecycle.getCurrentState().isAtLeast(Lifecycle.State.CREATED)) {
-			lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+			try {
+				lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+			} catch (IllegalStateException e) {  }
 		}
 		super.onDestroy();
 	}

src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java 🔗

@@ -62,7 +62,7 @@ public class WebRTCWrapper {
     private final ExecutorService localDescriptionExecutorService =
             Executors.newSingleThreadExecutor();
 
-    private static final int TONE_DURATION = 500;
+    private static final int TONE_DURATION = 400;
     private static final int DEFAULT_TONE_VOLUME = 60;
     private static final Map<String,Integer> TONE_CODES;
     static {
@@ -718,9 +718,12 @@ public class WebRTCWrapper {
 
     public boolean applyDtmfTone(String tone) {
         localAudioTrack.rtpSender.dtmf().insertDtmf(tone, TONE_DURATION, 100);
-        final var toneGenerator =
-                new ToneGenerator(AudioManager.STREAM_VOICE_CALL, DEFAULT_TONE_VOLUME);
-        toneGenerator.startTone(TONE_CODES.get(tone), TONE_DURATION);
+        final var handler = new android.os.Handler(android.os.Looper.getMainLooper());
+        handler.post(() -> {
+            final var toneGenerator = new ToneGenerator(AudioManager.STREAM_VOICE_CALL, DEFAULT_TONE_VOLUME);
+            toneGenerator.startTone(TONE_CODES.get(tone), TONE_DURATION);
+        });
+
         return true;
     }