- Handle close camera device when the user leaves the screen before camera has been opened.

- Create Release function for Orchestrator to cancel all pending tasks.
- Handle NullPointerExceptions.
- Create function to force close camera.
pull/946/head
MayconCardoso 5 years ago
parent d096382294
commit d1d376b2c6
  1. 15
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/orchestrator/CameraOrchestrator.java

@ -59,7 +59,7 @@ public class CameraOrchestrator {
protected final ArrayDeque<Token> mJobs = new ArrayDeque<>();
protected final Object mLock = new Object();
private final Map<String, Runnable> mDelayedJobs = new HashMap<>();
private boolean released = false;
private boolean mIsReleased = false;
public CameraOrchestrator(@NonNull Callback callback) {
mCallback = callback;
@ -82,12 +82,13 @@ public class CameraOrchestrator {
public void release(){
mJobs.clear();
mDelayedJobs.clear();
reset();
released = true;
mIsReleased = true;
}
public boolean isReleased(){
return released;
return mIsReleased;
}
@SuppressWarnings("unchecked")
@ -99,7 +100,7 @@ public class CameraOrchestrator {
final TaskCompletionSource<T> source = new TaskCompletionSource<>();
final WorkerHandler handler = mCallback.getJobWorker(name);
synchronized (mLock) {
if(released){
if(isReleased()){
return source.getTask();
}
@ -152,7 +153,9 @@ public class CameraOrchestrator {
public void scheduleDelayed(@NonNull final String name,
long minDelay,
@NonNull final Runnable runnable) {
if(released) return;
if(mIsReleased) {
return;
}
Runnable wrapper = new Runnable() {
@Override
@ -187,7 +190,7 @@ public class CameraOrchestrator {
public void reset() {
synchronized (mLock) {
released = false;
mIsReleased = false;
List<String> all = new ArrayList<>();
//noinspection CollectionAddAllCanBeReplacedWithConstructor
all.addAll(mDelayedJobs.keySet());

Loading…
Cancel
Save