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

Commit 7b6cfc70 authored by Robert Shih's avatar Robert Shih Committed by Automerger Merge Worker
Browse files

Merge "DrmManager: check drm.service.enabled in init (2nd attempt)" into sc-dev am: 01ddb68c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15279574

Change-Id: I242fae8a7fcf9f72b83c92dda56acd3d79c19f47
parents dd297848 01ddb68c
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
+5 −17
Original line number Diff line number Diff line
@@ -52,25 +52,13 @@ 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
        sp<IServiceManager> sm = defaultServiceManager();
        sp<IBinder> binder = sm->getService(String16("drm.drmManager"));
        if (binder == NULL) {
            // Do NOT retry; IServiceManager already waits for ~5 seconds
            // in getService if a service doesn't yet exist.
            return sDrmManagerService;
        }

        sp<IServiceManager> sm = defaultServiceManager();
        sp<IBinder> binder;
        do {
            binder = sm->getService(String16("drm.drmManager"));
            if (binder != 0) {
                break;
            }
            ALOGW("DrmManagerService not published, waiting...");
            struct timespec reqt;
            reqt.tv_sec  = 0;
            reqt.tv_nsec = 500000000; //0.5 sec
            nanosleep(&reqt, NULL);
        } while (true);
        if (NULL == sDeathNotifier.get()) {
            sDeathNotifier = new DeathNotifier();
        }