Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f2619c1f authored by Robert Shih's avatar Robert Shih Committed by Android (Google) Code Review
Browse files

Merge "DrmManager: check drm.service.enabled in init" into sc-dev

parents 1243bc5c fccd98a3
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
service drm /system/bin/drmserver
    disabled
    class main
    user drm
    group drm system inet drmrpc readproc
    writepid /dev/cpuset/foreground/tasks

on property:drm.service.enabled=true
    start drm

on property:drm.service.enabled=1
    start drm
+6 −9
Original line number Diff line number Diff line
@@ -52,25 +52,22 @@ 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 {
        for(int i = 0; i < 10; i++) {
            binder = sm->getService(String16("drm.drmManager"));
            if (binder != 0) {
                break;
            }
            ALOGW("DrmManagerService not published, waiting...");
            ALOGW("DrmManagerService not published, waiting... %d", i);
            struct timespec reqt;
            reqt.tv_sec  = 0;
            reqt.tv_nsec = 500000000; //0.5 sec
            nanosleep(&reqt, NULL);
        } while (true);
        }
        if (binder == NULL) {
            return sDrmManagerService;
        }
        if (NULL == sDeathNotifier.get()) {
            sDeathNotifier = new DeathNotifier();
        }