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

Commit 887f5214 authored by Jae Seo's avatar Jae Seo
Browse files

TIF: Cache the app private command and send it when connection is made

Bug: 17559793
Change-Id: If785d1ffceb5b5152381818efc4d1c8b5115143c
parent b1df48e4
Loading
Loading
Loading
Loading
+24 −5
Original line number Diff line number Diff line
@@ -88,6 +88,10 @@ public class TvView extends ViewGroup {
    private float mStreamVolume;
    private int mVideoWidth = VIDEO_SIZE_VALUE_UNKNOWN;
    private int mVideoHeight = VIDEO_SIZE_VALUE_UNKNOWN;
    private int mCaptionEnabled;
    private String mAppPrivateCommandAction;
    private Bundle mAppPrivateCommandData;

    private boolean mSurfaceChanged;
    private int mSurfaceFormat;
    private int mSurfaceWidth;
@@ -100,7 +104,6 @@ public class TvView extends ViewGroup {
    private int mSurfaceViewRight;
    private int mSurfaceViewTop;
    private int mSurfaceViewBottom;
    private int mCaptionEnabled;

    private final SurfaceHolder.Callback mSurfaceHolderCallback = new SurfaceHolder.Callback() {
        @Override
@@ -421,10 +424,10 @@ public class TvView extends ViewGroup {
     * Calls {@link TvInputService.Session#appPrivateCommand(String, Bundle)
     * TvInputService.Session.appPrivateCommand()} on the current TvView.
     *
     * @param action Name of the command to be performed. This <em>must</em> be a scoped name, i.e.
     *            prefixed with a package name you own, so that different developers will not create
     *            conflicting commands.
     * @param data Any data to include with the command.
     * @param action The name of the private command to send. This <em>must</em> be a scoped name,
     *            i.e. prefixed with a package name you own, so that different developers will not
     *            create conflicting commands.
     * @param data An optional bundle to send with the command.
     * @hide
     */
    @SystemApi
@@ -434,6 +437,13 @@ public class TvView extends ViewGroup {
        }
        if (mSession != null) {
            mSession.sendAppPrivateCommand(action, data);
        } else {
            Log.w(TAG, "sendAppPrivateCommand - session not created (action " + action + " cached)");
            if (mAppPrivateCommandAction != null) {
                Log.w(TAG, "previous cached action " + action + " removed");
            }
            mAppPrivateCommandAction = action;
            mAppPrivateCommandData = data;
        }
    }

@@ -619,6 +629,9 @@ public class TvView extends ViewGroup {
    }

    private void release() {
        mAppPrivateCommandAction = null;
        mAppPrivateCommandData = null;

        setSessionSurface(null);
        removeSessionOverlayView();
        mUseRequestedSurfaceLayout = false;
@@ -862,6 +875,12 @@ public class TvView extends ViewGroup {
                if (mHasStreamVolume) {
                    mSession.setStreamVolume(mStreamVolume);
                }
                if (mAppPrivateCommandAction != null) {
                    mSession.sendAppPrivateCommand(
                            mAppPrivateCommandAction, mAppPrivateCommandData);
                    mAppPrivateCommandAction = null;
                    mAppPrivateCommandData = null;
                }
            } else {
                mSessionCallback = null;
                if (mCallback != null) {