summaryrefslogtreecommitdiffstats
path: root/drm/libdrmframework/DrmManagerClientImpl.cpp
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2014-06-09 21:12:44 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-06-09 21:12:44 +0000
commit4299a7c2b049b07b3456a81a4c2b1030523c08ca (patch)
treed3540220be0376ea8166a6d60941fd9ef753dc99 /drm/libdrmframework/DrmManagerClientImpl.cpp
parentcb3d3a365c91ed996c47dea6ff1490f2f13c1b52 (diff)
parent940f8be3619cecda66dad33f995904795df88c2d (diff)
downloadframeworks_av-4299a7c2b049b07b3456a81a4c2b1030523c08ca.zip
frameworks_av-4299a7c2b049b07b3456a81a4c2b1030523c08ca.tar.gz
frameworks_av-4299a7c2b049b07b3456a81a4c2b1030523c08ca.tar.bz2
am 940f8be3: Merge "Implement a NoOp DrmManagerClientImpl when no DRM service exists" into klp-modular-dev
* commit '940f8be3619cecda66dad33f995904795df88c2d': Implement a NoOp DrmManagerClientImpl when no DRM service exists
Diffstat (limited to 'drm/libdrmframework/DrmManagerClientImpl.cpp')
-rw-r--r--drm/libdrmframework/DrmManagerClientImpl.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/drm/libdrmframework/DrmManagerClientImpl.cpp b/drm/libdrmframework/DrmManagerClientImpl.cpp
index ffefd74..2d2c90e 100644
--- a/drm/libdrmframework/DrmManagerClientImpl.cpp
+++ b/drm/libdrmframework/DrmManagerClientImpl.cpp
@@ -21,8 +21,10 @@
#include <utils/String8.h>
#include <utils/Vector.h>
#include <binder/IServiceManager.h>
+#include <cutils/properties.h>
#include "DrmManagerClientImpl.h"
+#include "NoOpDrmManagerClientImpl.h"
using namespace android;
@@ -35,9 +37,12 @@ const String8 DrmManagerClientImpl::EMPTY_STRING("");
DrmManagerClientImpl* DrmManagerClientImpl::create(
int* pUniqueId, bool isNative) {
- *pUniqueId = getDrmManagerService()->addUniqueId(isNative);
-
- return new DrmManagerClientImpl();
+ sp<IDrmManagerService> service = getDrmManagerService();
+ if (service != NULL) {
+ *pUniqueId = getDrmManagerService()->addUniqueId(isNative);
+ return new DrmManagerClientImpl();
+ }
+ return new NoOpDrmManagerClientImpl();
}
void DrmManagerClientImpl::remove(int uniqueId) {
@@ -47,6 +52,12 @@ void DrmManagerClientImpl::remove(int uniqueId) {
const sp<IDrmManagerService>& DrmManagerClientImpl::getDrmManagerService() {
Mutex::Autolock lock(sMutex);
if (NULL == sDrmManagerService.get()) {
+ char value[PROPERTY_VALUE_MAX];
+ if (property_get("drm.service.enabled", value, NULL) == 0) {
+ // Drm is undefined for this device
+ return sDrmManagerService;
+ }
+
sp<IServiceManager> sm = defaultServiceManager();
sp<IBinder> binder;
do {