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

Commit ab7d1631 authored by Henry Fang's avatar Henry Fang Committed by Automerger Merge Worker
Browse files

Merge "When sharing to new frontend, stop sharing with old" am: 92218b9e am:...

Merge "When sharing to new frontend, stop sharing with old" am: 92218b9e am: 56f002cd am: 28bea755 am: 7922d9d6

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2595171



Change-Id: I3835067bdad5f0804797318ee4ffc83f2460a852
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents e44a88f1 7922d9d6
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1468,6 +1468,10 @@ int JTuner::shareFrontend(int feId) {
        return (int)Result::INVALID_STATE;
    }

    if (mDemuxClient != NULL) {
        mDemuxClient->setFrontendDataSourceById(feId);
    }

    mSharedFeId = feId;
    return (int)Result::SUCCESS;
}
+14 −0
Original line number Diff line number Diff line
@@ -81,6 +81,11 @@ public final class ClientProfile {

    private Set<Integer> mUsingDemuxHandles = new HashSet<>();

    /**
     * Client id sharee that has shared frontend with the current client.
     */
    private Integer mShareeFeClientId = INVALID_RESOURCE_ID;

    /**
     * List of the Lnb handles that are used by the current client.
     */
@@ -225,12 +230,21 @@ public final class ClientProfile {
        return mShareFeClientIds;
    }

    public Integer getShareeFeClientId() {
        return mShareeFeClientId;
    }

    public void setShareeFeClientId(Integer shareeFeClientId) {
        mShareeFeClientId = shareeFeClientId;
    }

    /**
     * Called when the client released a frontend.
     */
    public void releaseFrontend() {
        mUsingFrontendHandles.clear();
        mShareFeClientIds.clear();
        mShareeFeClientId = INVALID_RESOURCE_ID;
        mPrimaryUsingFrontendHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE;
    }

+8 −0
Original line number Diff line number Diff line
@@ -1087,9 +1087,15 @@ public class TunerResourceManagerService extends SystemService implements IBinde
        if (DEBUG) {
            Slog.d(TAG, "shareFrontend from " + selfClientId + " with " + targetClientId);
        }
        Integer shareeFeClientId = getClientProfile(selfClientId).getShareeFeClientId();
        if (shareeFeClientId != ClientProfile.INVALID_RESOURCE_ID) {
            getClientProfile(shareeFeClientId).stopSharingFrontend(selfClientId);
            getClientProfile(selfClientId).releaseFrontend();
        }
        for (int feId : getClientProfile(targetClientId).getInUseFrontendHandles()) {
            getClientProfile(selfClientId).useFrontend(feId);
        }
        getClientProfile(selfClientId).setShareeFeClientId(targetClientId);
        getClientProfile(targetClientId).shareFrontend(selfClientId);
    }

@@ -1099,6 +1105,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde
        // change the owner of all the inUse frontend
        newOwnerProfile.shareFrontend(currentOwnerId);
        currentOwnerProfile.stopSharingFrontend(newOwnerId);
        newOwnerProfile.setShareeFeClientId(ClientProfile.INVALID_RESOURCE_ID);
        currentOwnerProfile.setShareeFeClientId(newOwnerId);
        for (int inUseHandle : newOwnerProfile.getInUseFrontendHandles()) {
            getFrontendResource(inUseHandle).setOwner(newOwnerId);
        }