Merge "Cameraservice: Cache camera service proxy interface" into qt-dev

gugelfrei
TreeHugger Robot 5 years ago committed by Android (Google) Code Review
commit 72b8b7df5e

@ -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() {

@ -930,6 +930,11 @@ private:
static StatusInternal mapToInternal(hardware::camera::common::V1_0::CameraDeviceStatus status);
static int32_t mapToInterface(StatusInternal status);
// Guard mCameraServiceProxy
static Mutex sProxyMutex;
// Cached interface to the camera service proxy in system service
static sp<hardware::ICameraServiceProxy> sCameraServiceProxy;
static sp<hardware::ICameraServiceProxy> getCameraServiceProxy();
static void pingCameraServiceProxy();

Loading…
Cancel
Save