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

Commit 01138550 authored by James Dong's avatar James Dong
Browse files

Fix an issue where the message queue fails to queue in the looper threads...

Fix an issue where the message queue fails to queue in the looper threads because they are not created.

o related-to-bug: 6293875

Change-Id: I03dbb2782bd90f88d1f8df086b8a529730afe5dc
parent a08dc5de
Loading
Loading
Loading
Loading
+17 −15
Original line number Diff line number Diff line
@@ -242,6 +242,7 @@ public class DrmManagerClient {
    public DrmManagerClient(Context context) {
        mContext = context;
        mReleased = false;
        createEventThreads();

        // save the unique id
        mUniqueId = _initialize();
@@ -283,21 +284,6 @@ public class DrmManagerClient {
        _release(mUniqueId);
    }


    private void createListeners() {
        if (mEventHandler == null && mInfoHandler == null) {
            mInfoThread = new HandlerThread("DrmManagerClient.InfoHandler");
            mInfoThread.start();
            mInfoHandler = new InfoHandler(mInfoThread.getLooper());

            mEventThread = new HandlerThread("DrmManagerClient.EventHandler");
            mEventThread.start();
            mEventHandler = new EventHandler(mEventThread.getLooper());
            _setListeners(mUniqueId, new WeakReference<DrmManagerClient>(this));
        }
    }


    /**
     * Registers an {@link DrmManagerClient.OnInfoListener} callback, which is invoked when the 
     * DRM framework sends status or warning information during registration or rights acquisition.
@@ -878,5 +864,21 @@ public class DrmManagerClient {
    private native DrmConvertedStatus _closeConvertSession(int uniqueId, int convertId);

    private native DrmSupportInfo[] _getAllSupportInfo(int uniqueId);

    private void createEventThreads() {
        if (mEventHandler == null && mInfoHandler == null) {
            mInfoThread = new HandlerThread("DrmManagerClient.InfoHandler");
            mInfoThread.start();
            mInfoHandler = new InfoHandler(mInfoThread.getLooper());

            mEventThread = new HandlerThread("DrmManagerClient.EventHandler");
            mEventThread.start();
            mEventHandler = new EventHandler(mEventThread.getLooper());
        }
    }

    private void createListeners() {
        _setListeners(mUniqueId, new WeakReference<DrmManagerClient>(this));
    }
}