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

Commit 86806e9c authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add pending list of external source."

parents 01da4566 c2086958
Loading
Loading
Loading
Loading
+52 −1
Original line number Diff line number Diff line
@@ -114,6 +114,8 @@ class TvInputHardwareManager implements TvInputHal.Callback {
    private final SparseBooleanArray mHdmiStateMap = new SparseBooleanArray();
    private final List<Message> mPendingHdmiDeviceEvents = new LinkedList<>();

    private final List<Message> mPendingTvinputInfoEvents = new LinkedList<>();

    // Calls to mListener should happen here.
    private final Handler mHandler = new ListenerHandler();

@@ -229,6 +231,15 @@ class TvInputHardwareManager implements TvInputHal.Callback {
                            connection.getInputStateLocked(), 0, inputId).sendToTarget();
                    }
                }
            } else {
                Message msg = mHandler.obtainMessage(ListenerHandler.TVINPUT_INFO_ADDED,
                    deviceId, cableConnectionStatus, connection);
                for (Iterator<Message> it = mPendingTvinputInfoEvents.iterator(); it.hasNext();) {
                    if (it.next().arg1 == deviceId) {
                    it.remove();
                    }
                }
                mPendingTvinputInfoEvents.add(msg);
           }
            ITvInputHardwareCallback callback = connection.getCallbackLocked();
            if (callback != null) {
@@ -288,6 +299,8 @@ class TvInputHardwareManager implements TvInputHal.Callback {
            }
            mHardwareInputIdMap.put(deviceId, info.getId());
            mInputMap.put(info.getId(), info);
            processPendingTvInputInfoEventsLocked();
            Slog.d(TAG,"deviceId ="+ deviceId+", tvinputinfo = "+info);

            // Process pending state changes

@@ -529,6 +542,20 @@ class TvInputHardwareManager implements TvInputHal.Callback {
        }
    }


    private void processPendingTvInputInfoEventsLocked() {
        for (Iterator<Message> it = mPendingTvinputInfoEvents.iterator(); it.hasNext(); ) {
            Message msg = it.next();
            int deviceId =  msg.arg1;
            String inputId = mHardwareInputIdMap.get(deviceId);
            if (inputId != null) {
                msg.sendToTarget();
                it.remove();
            }
        }
    }


    private void updateVolume() {
        mCurrentMaxIndex = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        mCurrentIndex = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
@@ -1181,6 +1208,7 @@ class TvInputHardwareManager implements TvInputHal.Callback {
        private static final int HDMI_DEVICE_ADDED = 4;
        private static final int HDMI_DEVICE_REMOVED = 5;
        private static final int HDMI_DEVICE_UPDATED = 6;
        private static final int TVINPUT_INFO_ADDED = 7;

        @Override
        public final void handleMessage(Message msg) {
@@ -1225,6 +1253,29 @@ class TvInputHardwareManager implements TvInputHal.Callback {
                    }
                    break;
                }
                case TVINPUT_INFO_ADDED: {
                    int deviceId = msg.arg1;
                    int cableConnectionStatus = msg.arg2;
                    Connection connection =(Connection)msg.obj;

                    int previousConfigsLength = connection.getConfigsLengthLocked();
                    int previousCableConnectionStatus = connection.getInputStateLocked();
                    String inputId = mHardwareInputIdMap.get(deviceId);

                    if (inputId != null) {
                        if (connection.updateCableConnectionStatusLocked(cableConnectionStatus)) {
                            if (previousCableConnectionStatus != connection.getInputStateLocked()) {
                                mListener.onStateChanged(inputId, connection.getInputStateLocked());
                            }
                        } else {
                            if ((previousConfigsLength == 0)
                                    != (connection.getConfigsLengthLocked() == 0)) {
                                mListener.onStateChanged(inputId, connection.getInputStateLocked());
                            }
                        }
                    }
                    break;
                }
                default: {
                    Slog.w(TAG, "Unhandled message: " + msg);
                    break;