Loading media/libmediaplayerservice/MediaRecorderClient.cpp +29 −23 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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. Loading @@ -447,6 +452,7 @@ status_t MediaRecorderClient::setListener(const sp<IMediaRecorderClient>& listen }); } sCameraChecked = true; } { using ::android::hidl::base::V1_0::IBase; Loading Loading
media/libmediaplayerservice/MediaRecorderClient.cpp +29 −23 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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. Loading @@ -447,6 +452,7 @@ status_t MediaRecorderClient::setListener(const sp<IMediaRecorderClient>& listen }); } sCameraChecked = true; } { using ::android::hidl::base::V1_0::IBase; Loading