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

Commit f97fff7c authored by Henry Fang's avatar Henry Fang
Browse files

Don't open frontend device if it's a shared frontend

bug: 175255961
Test: manual
Change-Id: Ib8c9704ebd1c518a84b8526172ca2fe3d087db87
parent f1e061b2
Loading
Loading
Loading
Loading
+15 −6
Original line number Original line Diff line number Diff line
@@ -279,6 +279,7 @@ public class Tuner implements AutoCloseable {
    @Nullable
    @Nullable
    private FrontendInfo mFrontendInfo;
    private FrontendInfo mFrontendInfo;
    private Integer mFrontendHandle;
    private Integer mFrontendHandle;
    private Boolean mIsSharedFrontend = false;
    private int mFrontendType = FrontendSettings.TYPE_UNDEFINED;
    private int mFrontendType = FrontendSettings.TYPE_UNDEFINED;
    private int mUserId;
    private int mUserId;
    private Lnb mLnb;
    private Lnb mLnb;
@@ -441,8 +442,11 @@ public class Tuner implements AutoCloseable {
     */
     */
    public void shareFrontendFromTuner(@NonNull Tuner tuner) {
    public void shareFrontendFromTuner(@NonNull Tuner tuner) {
        mTunerResourceManager.shareFrontend(mClientId, tuner.mClientId);
        mTunerResourceManager.shareFrontend(mClientId, tuner.mClientId);
        synchronized (mIsSharedFrontend) {
            mFrontendHandle = tuner.mFrontendHandle;
            mFrontendHandle = tuner.mFrontendHandle;
        mFrontend = nativeOpenFrontendByHandle(mFrontendHandle);
            mFrontend = tuner.mFrontend;
            mIsSharedFrontend = true;
        }
    }
    }


    /**
    /**
@@ -473,10 +477,15 @@ public class Tuner implements AutoCloseable {


    private void releaseAll() {
    private void releaseAll() {
        if (mFrontendHandle != null) {
        if (mFrontendHandle != null) {
            synchronized (mIsSharedFrontend) {
                if (!mIsSharedFrontend) {
                    int res = nativeCloseFrontend(mFrontendHandle);
                    int res = nativeCloseFrontend(mFrontendHandle);
                    if (res != Tuner.RESULT_SUCCESS) {
                    if (res != Tuner.RESULT_SUCCESS) {
                        TunerUtils.throwExceptionForResult(res, "failed to close frontend");
                        TunerUtils.throwExceptionForResult(res, "failed to close frontend");
                    }
                    }
                }
                mIsSharedFrontend = false;
            }
            mTunerResourceManager.releaseFrontend(mFrontendHandle, mClientId);
            mTunerResourceManager.releaseFrontend(mFrontendHandle, mClientId);
            FrameworkStatsLog
            FrameworkStatsLog
                    .write(FrameworkStatsLog.TV_TUNER_STATE_CHANGED, mUserId,
                    .write(FrameworkStatsLog.TV_TUNER_STATE_CHANGED, mUserId,