Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 573c5278 authored by Avichal Rakesh's avatar Avichal Rakesh Committed by Automerger Merge Worker
Browse files

Merge "camera: Fix exception handling from ImageReader#detach" into tm-d1-dev am: 00d8fb50

parents 8513f6b2 00d8fb50
Loading
Loading
Loading
Loading
+31 −3
Original line number Original line Diff line number Diff line
@@ -1737,6 +1737,20 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
                } catch (IllegalStateException e) {
                } catch (IllegalStateException e) {
                    // This is possible in case the client disconnects from the output surface
                    // This is possible in case the client disconnects from the output surface
                    // abruptly.
                    // abruptly.
                    Log.w(TAG, "Output surface likely abandoned, dropping buffer!");
                    img.close();
                } catch (RuntimeException e) {
                    // NOTE: This is intended to catch RuntimeException from ImageReader.detachImage
                    // ImageReader.detachImage is not supposed to throw RuntimeExceptions but the
                    // bug went unchecked for a few years and now its behavior cannot be changed
                    // without breaking backwards compatibility.

                    if (!e.getClass().equals(RuntimeException.class)) {
                        // re-throw any exceptions that aren't base RuntimeException since they are
                        // coming from elsewhere, and we shouldn't silently drop those.
                        throw e;
                    }

                    Log.w(TAG, "Output surface likely abandoned, dropping buffer!");
                    Log.w(TAG, "Output surface likely abandoned, dropping buffer!");
                    img.close();
                    img.close();
                }
                }
@@ -1773,9 +1787,23 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
                }
                }
                try {
                try {
                    reader.detachImage(img);
                    reader.detachImage(img);
                } catch (Exception e) {
                } catch (IllegalStateException e) {
                    Log.e(TAG,
                    Log.e(TAG, "Failed to detach image!");
                            "Failed to detach image!");
                    img.close();
                    return;
                } catch (RuntimeException e) {
                    // NOTE: This is intended to catch RuntimeException from ImageReader.detachImage
                    // ImageReader.detachImage is not supposed to throw RuntimeExceptions but the
                    // bug went unchecked for a few years and now its behavior cannot be changed
                    // without breaking backwards compatibility.

                    if (!e.getClass().equals(RuntimeException.class)) {
                        // re-throw any exceptions that aren't base RuntimeException since they are
                        // coming from elsewhere, and we shouldn't silently drop those.
                        throw e;
                    }

                    Log.e(TAG, "Failed to detach image!");
                    img.close();
                    img.close();
                    return;
                    return;
                }
                }