From 7c6bb44155daae46fe33afa6c35722fab254e2b5 Mon Sep 17 00:00:00 2001 From: Sagar Shah Date: Sun, 9 Jan 2022 15:28:25 +0530 Subject: [PATCH] Prevents invoking future executor task if already cancelled. Fixes issue #33 --- .../ffmpegkit/AsyncFFmpegExecuteTask.java | 22 +++++++++++++------ .../ffmpegkit/AsyncFFprobeExecuteTask.java | 22 +++++++++++++------ 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java index f1f0cce..7bd35f3 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java @@ -33,15 +33,23 @@ public class AsyncFFmpegExecuteTask implements Runnable { @Override public void run() { - FFmpegKitConfig.ffmpegExecute(ffmpegSession); + try { + if (Thread.currentThread().isInterrupted()) { + return; + } else { + FFmpegKitConfig.ffmpegExecute(ffmpegSession); - final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); - if (globalExecuteCallbackFunction != null) { - globalExecuteCallbackFunction.apply(ffmpegSession); - } + final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); + if (globalExecuteCallbackFunction != null) { + globalExecuteCallbackFunction.apply(ffmpegSession); + } - if (executeCallback != null) { - executeCallback.apply(ffmpegSession); + if (executeCallback != null) { + executeCallback.apply(ffmpegSession); + } + } + } catch (Exception ex) { + Log.e("TAG", "Exception while executing ffmpeg task" + ex.toString()); } } } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java index dafb86d..479724e 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java @@ -33,15 +33,23 @@ public class AsyncFFprobeExecuteTask implements Runnable { @Override public void run() { - FFmpegKitConfig.ffprobeExecute(ffprobeSession); + try { + if (Thread.currentThread().isInterrupted()) { + return; + } else { + FFmpegKitConfig.ffprobeExecute(ffprobeSession); - final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); - if (globalExecuteCallbackFunction != null) { - globalExecuteCallbackFunction.apply(ffprobeSession); - } + final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); + if (globalExecuteCallbackFunction != null) { + globalExecuteCallbackFunction.apply(ffprobeSession); + } - if (executeCallback != null) { - executeCallback.apply(ffprobeSession); + if (executeCallback != null) { + executeCallback.apply(ffprobeSession); + } + } + } catch (Exception ex) { + Log.e("TAG", "Exception while probing ffmpeg task" + ex.toString()); } }