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

Commit d55868f7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Check for disabled camera in MediaRecorderClient" into rvc-qpr-dev

parents ab0d91f1 8087057b
Loading
Loading
Loading
Loading
+29 −23
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include <binder/IServiceManager.h>
#include <binder/MemoryHeapBase.h>
#include <binder/MemoryBase.h>
#include <camera/CameraUtils.h>
#include <codec2/hidl/client.h>
#include <cutils/atomic.h>
#include <cutils/properties.h> // for property_get
@@ -423,10 +424,14 @@ status_t MediaRecorderClient::setListener(const sp<IMediaRecorderClient>& listen

    sp<IServiceManager> sm = defaultServiceManager();

    static const bool sCameraDisabled = CameraUtils::isCameraServiceDisabled();

    if (!sCameraDisabled) {
        // WORKAROUND: We don't know if camera exists here and getService might block for 5 seconds.
        // Use checkService for camera if we don't know it exists.
        static std::atomic<bool> sCameraChecked(false);  // once true never becomes false.
        static std::atomic<bool> sCameraVerified(false); // once true never becomes false.

        sp<IBinder> binder = (sCameraVerified || !sCameraChecked)
            ? sm->getService(String16("media.camera")) : sm->checkService(String16("media.camera"));
        // If the device does not have a camera, do not create a death listener for it.
@@ -447,6 +452,7 @@ status_t MediaRecorderClient::setListener(const sp<IMediaRecorderClient>& listen
            });
        }
        sCameraChecked = true;
    }

    {
        using ::android::hidl::base::V1_0::IBase;