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

Commit c15e9945 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "AVRCP: Properly handle player set attribute response"

parents c7c9a230 1530c41f
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -402,9 +402,14 @@ public final class Avrcp {
                                                      GET_INVALID);
                byte [] data;
                String [] text;
                boolean isSetAttrValRsp = false;
                synchronized (mPendingCmds) {
                    Integer val = new Integer(getResponse);
                    if (mPendingCmds.contains(val)) {
                        if (getResponse == SET_ATTRIBUTE_VALUES) {
                            isSetAttrValRsp = true;
                            if (DEBUG) Log.v(TAG,"Response received for SET_ATTRIBUTE_VALUES");
                        }
                        mHandler.removeMessages(MESSAGE_PLAYERSETTINGS_TIMEOUT);
                        mPendingCmds.remove(val);
                    }
@@ -437,17 +442,20 @@ public final class Avrcp {
                        if (data[0] == ATTRIBUTE_EQUALIZER ||
                            data[0] == ATTRIBUTE_REPEATMODE ||
                            data[0] == ATTRIBUTE_SHUFFLEMODE) {
                            if (mPlayerStatusChangeNT == NOTIFICATION_TYPE_INTERIM) {
                                Log.v(TAG,"Send Player appl attribute changed response");
                                mPlayerStatusChangeNT = NOTIFICATION_TYPE_CHANGED;
                                sendPlayerAppChangedRsp(mPlayerStatusChangeNT);
                            } else {
                            if (isSetAttrValRsp){
                                isSetAttrValRsp = false;
                                Log.v(TAG,"Respond to SET_ATTRIBUTE_VALUES request");
                                if (data[1] == ATTRIBUTE_NOTSUPPORTED) {
                                   SendSetPlayerAppRspNative(INTERNAL_ERROR);
                                } else {
                                   SendSetPlayerAppRspNative(OPERATION_SUCCESSFUL);
                                }
                            } else if (mPlayerStatusChangeNT == NOTIFICATION_TYPE_INTERIM) {
                                Log.v(TAG,"Send Player appl attribute changed response");
                                mPlayerStatusChangeNT = NOTIFICATION_TYPE_CHANGED;
                                sendPlayerAppChangedRsp(mPlayerStatusChangeNT);
                            } else {
                                Log.v(TAG,"Drop Set Attr Val update from media player");
                            }
                        }
                    break;
@@ -3440,7 +3448,7 @@ private void updateLocalPlayerSettings( byte[] data) {
        msg.what = MESSAGE_PLAYERSETTINGS_TIMEOUT;
        msg.arg1 = SET_ATTRIBUTE_VALUES;
        mPendingCmds.add(new Integer(msg.arg1));
        mHandler.sendMessageDelayed(msg, 130);
        mHandler.sendMessageDelayed(msg, 500);
    }

    //PDU 0x15