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

Commit da5edf83 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 9815530 from 21c45b5c to tm-qpr3-release

Change-Id: Ibe235027275ae53005e2fe684f495fed72e9c6ef
parents 9cf1768c 21c45b5c
Loading
Loading
Loading
Loading
+17 −7
Original line number Diff line number Diff line
@@ -17,12 +17,7 @@
package android.hardware;

import static android.system.OsConstants.EACCES;
import static android.system.OsConstants.EBUSY;
import static android.system.OsConstants.EINVAL;
import static android.system.OsConstants.ENODEV;
import static android.system.OsConstants.ENOSYS;
import static android.system.OsConstants.EOPNOTSUPP;
import static android.system.OsConstants.EUSERS;

import android.annotation.Nullable;
import android.annotation.SdkConstant;
@@ -56,6 +51,7 @@ import android.util.Log;
import android.view.Surface;
import android.view.SurfaceHolder;

import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IAppOpsCallback;
import com.android.internal.app.IAppOpsService;
@@ -491,8 +487,22 @@ public class Camera {

        boolean overrideToPortrait = CameraManager.shouldOverrideToPortrait(
                ActivityThread.currentApplication().getApplicationContext());
        boolean forceSlowJpegMode = shouldForceSlowJpegMode();
        return native_setup(new WeakReference<Camera>(this), cameraId,
                ActivityThread.currentOpPackageName(), overrideToPortrait);
                ActivityThread.currentOpPackageName(), overrideToPortrait, forceSlowJpegMode);
    }

    private boolean shouldForceSlowJpegMode() {
        Context applicationContext = ActivityThread.currentApplication().getApplicationContext();
        String[] slowJpegPackageNames = applicationContext.getResources().getStringArray(
                R.array.config_forceSlowJpegModeList);
        String callingPackageName = applicationContext.getPackageName();
        for (String packageName : slowJpegPackageNames) {
            if (TextUtils.equals(packageName, callingPackageName)) {
                return true;
            }
        }
        return false;
    }

    /** used by Camera#open, Camera#open(int) */
@@ -563,7 +573,7 @@ public class Camera {

    @UnsupportedAppUsage
    private native int native_setup(Object cameraThis, int cameraId, String packageName,
            boolean overrideToPortrait);
            boolean overrideToPortrait, boolean forceSlowJpegMode);

    private native final void native_release();

+10 −6
Original line number Diff line number Diff line
@@ -471,7 +471,7 @@ public class LatencyTracker {
     */
    public void onActionStart(@Action int action, String tag) {
        synchronized (mLock) {
            if (!isEnabled()) {
            if (!isEnabled(action)) {
                return;
            }
            // skip if the action is already instrumenting.
@@ -495,7 +495,7 @@ public class LatencyTracker {
     */
    public void onActionEnd(@Action int action) {
        synchronized (mLock) {
            if (!isEnabled()) {
            if (!isEnabled(action)) {
                return;
            }
            Session session = mSessions.get(action);
@@ -605,23 +605,27 @@ public class LatencyTracker {

        void begin(@NonNull Runnable timeoutAction) {
            mStartRtc = SystemClock.elapsedRealtime();
            Trace.asyncTraceBegin(TRACE_TAG_APP, traceName(), 0);
            Trace.asyncTraceForTrackBegin(TRACE_TAG_APP, traceName(), traceName(), 0);

            // start counting timeout.
            mTimeoutRunnable = timeoutAction;
            mTimeoutRunnable = () -> {
                Trace.instantForTrack(TRACE_TAG_APP, traceName(), "timeout");
                timeoutAction.run();
            };
            BackgroundThread.getHandler()
                    .postDelayed(mTimeoutRunnable, TimeUnit.SECONDS.toMillis(15));
        }

        void end() {
            mEndRtc = SystemClock.elapsedRealtime();
            Trace.asyncTraceEnd(TRACE_TAG_APP, traceName(), 0);
            Trace.asyncTraceForTrackEnd(TRACE_TAG_APP, traceName(), "end", 0);
            BackgroundThread.getHandler().removeCallbacks(mTimeoutRunnable);
            mTimeoutRunnable = null;
        }

        void cancel() {
            Trace.asyncTraceEnd(TRACE_TAG_APP, traceName(), 0);
            Trace.instantForTrack(TRACE_TAG_APP, traceName(), "cancel");
            Trace.asyncTraceForTrackEnd(TRACE_TAG_APP, traceName(), "cancel", 0);
            BackgroundThread.getHandler().removeCallbacks(mTimeoutRunnable);
            mTimeoutRunnable = null;
        }
+4 −3
Original line number Diff line number Diff line
@@ -556,7 +556,8 @@ static void android_hardware_Camera_getCameraInfo(JNIEnv *env, jobject thiz, jin
// connect to camera service
static jint android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, jobject weak_this,
                                                 jint cameraId, jstring clientPackageName,
                                                 jboolean overrideToPortrait) {
                                                 jboolean overrideToPortrait,
                                                 jboolean forceSlowJpegMode) {
    // Convert jstring to String16
    const char16_t *rawClientName = reinterpret_cast<const char16_t*>(
        env->GetStringChars(clientPackageName, NULL));
@@ -568,7 +569,7 @@ static jint android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, jobj
    int targetSdkVersion = android_get_application_target_sdk_version();
    sp<Camera> camera =
            Camera::connect(cameraId, clientName, Camera::USE_CALLING_UID, Camera::USE_CALLING_PID,
                            targetSdkVersion, overrideToPortrait);
                            targetSdkVersion, overrideToPortrait, forceSlowJpegMode);
    if (camera == NULL) {
        return -EACCES;
    }
@@ -1054,7 +1055,7 @@ static const JNINativeMethod camMethods[] = {
        {"getNumberOfCameras", "()I", (void *)android_hardware_Camera_getNumberOfCameras},
        {"_getCameraInfo", "(IZLandroid/hardware/Camera$CameraInfo;)V",
         (void *)android_hardware_Camera_getCameraInfo},
        {"native_setup", "(Ljava/lang/Object;ILjava/lang/String;Z)I",
        {"native_setup", "(Ljava/lang/Object;ILjava/lang/String;ZZ)I",
         (void *)android_hardware_Camera_native_setup},
        {"native_release", "()V", (void *)android_hardware_Camera_release},
        {"setPreviewSurface", "(Landroid/view/Surface;)V",
+9 −0
Original line number Diff line number Diff line
@@ -5050,6 +5050,11 @@
         of known compatibility issues. -->
    <string-array name="config_highRefreshRateBlacklist"></string-array>

    <!-- The list of packages to force slowJpegMode for Apps using Camera API1 -->
    <string-array name="config_forceSlowJpegModeList" translatable="false">
        <!-- Add packages here -->
    </string-array>

    <!-- Whether or not to hide the navigation bar when the soft keyboard is visible in order to
         create additional screen real estate outside beyond the keyboard. Note that the user needs
         to have a confirmed way to dismiss the keyboard when desired. -->
@@ -5417,6 +5422,10 @@
        split screen. -->
    <bool name="config_isWindowManagerCameraCompatTreatmentEnabled">false</bool>

    <!-- Whether should use split screen aspect ratio for the activity when camera compat treatment
        is enabled and activity is connected to the camera in fullscreen. -->
    <bool name="config_isWindowManagerCameraCompatSplitScreenAspectRatioEnabled">false</bool>

    <!-- Whether a camera compat controller is enabled to allow the user to apply or revert
         treatment for stretched issues in camera viewfinder. -->
    <bool name="config_isCameraCompatControlForStretchedIssuesEnabled">false</bool>
+2 −0
Original line number Diff line number Diff line
@@ -4216,6 +4216,7 @@

  <java-symbol type="string" name="config_factoryResetPackage" />
  <java-symbol type="array" name="config_highRefreshRateBlacklist" />
  <java-symbol type="array" name="config_forceSlowJpegModeList" />

  <java-symbol type="layout" name="chooser_dialog" />
  <java-symbol type="layout" name="chooser_dialog_item" />
@@ -4488,6 +4489,7 @@
  <java-symbol type="bool" name="config_letterboxIsDisplayAspectRatioForFixedOrientationLetterboxEnabled" />
  <java-symbol type="bool" name="config_isCompatFakeFocusEnabled" />
  <java-symbol type="bool" name="config_isWindowManagerCameraCompatTreatmentEnabled" />
  <java-symbol type="bool" name="config_isWindowManagerCameraCompatSplitScreenAspectRatioEnabled" />
  <java-symbol type="bool" name="config_isCameraCompatControlForStretchedIssuesEnabled" />

  <java-symbol type="bool" name="config_hideDisplayCutoutWithDisplayArea" />
Loading