diff options
| author | Ruben Brunk <rubenbrunk@google.com> | 2015-05-19 17:25:13 -0700 | 
|---|---|---|
| committer | Ruben Brunk <rubenbrunk@google.com> | 2015-05-20 11:43:11 -0700 | 
| commit | 2823ce0ce6f9d508a07de20912c93cce9165027f (patch) | |
| tree | 8cba3b9c036b486e69578d13d8a76dcc77c5f7a7 /services | |
| parent | 6267b539d0d1ee7118aafd976d75cb8db397bc24 (diff) | |
| download | frameworks_av-2823ce0ce6f9d508a07de20912c93cce9165027f.zip frameworks_av-2823ce0ce6f9d508a07de20912c93cce9165027f.tar.gz frameworks_av-2823ce0ce6f9d508a07de20912c93cce9165027f.tar.bz2  | |
camera: Add AIDL interface for CameraServiceProxy.
- Adds an AIDL interface to allow the proxy camera service
  running in system server to accept RPCs from the camera
  service running in mediaserver.
- Request an update to the valid user set from the proxy
  camera service when mediaserver restarts to initialize
  properly + avoid DOS after a crash.
Bug: 21267484
Change-Id: Ib821582794ddd1e3574b5dc6c79f7cb197b57f10
Diffstat (limited to 'services')
| -rw-r--r-- | services/camera/libcameraservice/CameraService.cpp | 13 | ||||
| -rw-r--r-- | services/camera/libcameraservice/CameraService.h | 2 | 
2 files changed, 15 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp index fc9a332..cdf83cb 100644 --- a/services/camera/libcameraservice/CameraService.cpp +++ b/services/camera/libcameraservice/CameraService.cpp @@ -33,6 +33,7 @@  #include <binder/MemoryBase.h>  #include <binder/MemoryHeapBase.h>  #include <binder/ProcessInfoService.h> +#include <camera/ICameraServiceProxy.h>  #include <cutils/atomic.h>  #include <cutils/properties.h>  #include <gui/Surface.h> @@ -224,6 +225,18 @@ void CameraService::onFirstRef()      }      CameraDeviceFactory::registerService(this); + +    CameraService::pingCameraServiceProxy(); +} + +void CameraService::pingCameraServiceProxy() { +    sp<IServiceManager> sm = defaultServiceManager(); +    sp<IBinder> binder = sm->getService(String16("media.camera.proxy")); +    if (binder == nullptr) { +        return; +    } +    sp<ICameraServiceProxy> proxyBinder = interface_cast<ICameraServiceProxy>(binder); +    proxyBinder->pingForUserUpdate();  }  CameraService::~CameraService() { diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h index 9b7163a..ce3cb44 100644 --- a/services/camera/libcameraservice/CameraService.h +++ b/services/camera/libcameraservice/CameraService.h @@ -702,6 +702,8 @@ private:      static String8 toString(std::set<userid_t> intSet); +    static void pingCameraServiceProxy(); +  };  template<class Func>  | 
