|
|
|
@ -117,6 +117,9 @@ static void setLogLevel(int level) {
|
|
|
|
|
|
|
|
|
|
static const String16 sManageCameraPermission("android.permission.MANAGE_CAMERA");
|
|
|
|
|
|
|
|
|
|
Mutex CameraService::sProxyMutex;
|
|
|
|
|
sp<hardware::ICameraServiceProxy> CameraService::sCameraServiceProxy;
|
|
|
|
|
|
|
|
|
|
CameraService::CameraService() :
|
|
|
|
|
mEventLog(DEFAULT_EVENT_LOG_LENGTH),
|
|
|
|
|
mNumberOfCameras(0),
|
|
|
|
@ -203,18 +206,20 @@ status_t CameraService::enumerateProviders() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sp<ICameraServiceProxy> CameraService::getCameraServiceProxy() {
|
|
|
|
|
sp<ICameraServiceProxy> proxyBinder = nullptr;
|
|
|
|
|
#ifndef __BRILLO__
|
|
|
|
|
sp<IServiceManager> sm = defaultServiceManager();
|
|
|
|
|
// Use checkService because cameraserver normally starts before the
|
|
|
|
|
// system server and the proxy service. So the long timeout that getService
|
|
|
|
|
// has before giving up is inappropriate.
|
|
|
|
|
sp<IBinder> binder = sm->checkService(String16("media.camera.proxy"));
|
|
|
|
|
if (binder != nullptr) {
|
|
|
|
|
proxyBinder = interface_cast<ICameraServiceProxy>(binder);
|
|
|
|
|
Mutex::Autolock al(sProxyMutex);
|
|
|
|
|
if (sCameraServiceProxy == nullptr) {
|
|
|
|
|
sp<IServiceManager> sm = defaultServiceManager();
|
|
|
|
|
// Use checkService because cameraserver normally starts before the
|
|
|
|
|
// system server and the proxy service. So the long timeout that getService
|
|
|
|
|
// has before giving up is inappropriate.
|
|
|
|
|
sp<IBinder> binder = sm->checkService(String16("media.camera.proxy"));
|
|
|
|
|
if (binder != nullptr) {
|
|
|
|
|
sCameraServiceProxy = interface_cast<ICameraServiceProxy>(binder);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
return proxyBinder;
|
|
|
|
|
return sCameraServiceProxy;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CameraService::pingCameraServiceProxy() {
|
|
|
|
|