summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/CameraService.cpp
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2015-05-19 17:25:13 -0700
committerRuben Brunk <rubenbrunk@google.com>2015-05-20 11:43:11 -0700
commit2823ce0ce6f9d508a07de20912c93cce9165027f (patch)
tree8cba3b9c036b486e69578d13d8a76dcc77c5f7a7 /services/camera/libcameraservice/CameraService.cpp
parent6267b539d0d1ee7118aafd976d75cb8db397bc24 (diff)
downloadframeworks_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/camera/libcameraservice/CameraService.cpp')
-rw-r--r--services/camera/libcameraservice/CameraService.cpp13
1 files changed, 13 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() {