]> Pileus Git - ~andy/freeotp/commitdiff
Fix an anonymous class leak in the autofocus code
authorNathaniel McCallum <npmccallum@redhat.com>
Fri, 10 Jan 2014 21:47:25 +0000 (16:47 -0500)
committerNathaniel McCallum <npmccallum@redhat.com>
Fri, 10 Jan 2014 21:47:25 +0000 (16:47 -0500)
src/org/fedorahosted/freeotp/CameraDialogFragment.java

index dfc8eb65b47ae746dd59e9d4dd42eb0ab35cc080..ea1787ff51b1ac86dd8d4c00e70c0b8a0601fd06 100644 (file)
@@ -39,7 +39,7 @@ import android.view.View;
 import android.widget.TextView;
 
 public class CameraDialogFragment extends BaseAlertDialogFragment
-                       implements SurfaceHolder.Callback, Camera.AutoFocusCallback {
+                       implements SurfaceHolder.Callback  {
        public static final String FRAGMENT_TAG = "fragment_camera";
 
        private final CameraInfo mCameraInfo = new CameraInfo();
@@ -48,6 +48,26 @@ public class CameraDialogFragment extends BaseAlertDialogFragment
        private Handler mHandler;
        private Camera mCamera;
 
+       private static class AutoFocusHandler extends Handler
+                       implements Camera.AutoFocusCallback {
+               private final Camera mCamera;
+
+               public AutoFocusHandler(Camera camera) {
+                       mCamera = camera;
+               }
+
+               @Override
+               public void handleMessage(Message msg) {
+                       super.handleMessage(msg);
+                       mCamera.autoFocus(this);
+               }
+
+               @Override
+               public void onAutoFocus(boolean success, Camera camera) {
+                       sendEmptyMessageDelayed(0, 1000);
+               }
+       }
+
        public CameraDialogFragment() {
                super(R.string.scan_qr_code, R.layout.camera,
                        android.R.string.cancel, R.string.manual_entry, 0);
@@ -184,13 +204,7 @@ public class CameraDialogFragment extends BaseAlertDialogFragment
                        params.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
                else if (modes.contains(Parameters.FOCUS_MODE_AUTO)) {
                        params.setFocusMode(Parameters.FOCUS_MODE_AUTO);
-                       mHandler = new Handler() {
-                               @Override
-                               public void handleMessage(Message msg) {
-                                       super.handleMessage(msg);
-                                       mCamera.autoFocus(CameraDialogFragment.this);
-                               }
-                       };
+                       mHandler = new AutoFocusHandler(mCamera);
                }
                mCamera.setParameters(params);
        }
@@ -211,10 +225,4 @@ public class CameraDialogFragment extends BaseAlertDialogFragment
                mCamera.release();
                mCamera = null;
        }
-
-       @Override
-       public void onAutoFocus(boolean success, Camera camera) {
-               if (mHandler != null)
-                       mHandler.sendEmptyMessageDelayed(0, 1000);
-       }
 }