)]}'
{
  "commit": "285fa522fbf22fb3def446cf8334e9ed01b82b68",
  "tree": "4975410c1d7742ca09b744f851b7e5dde0ce96bb",
  "parents": [
    "523fd3c5da4c137a2f5002e8ba2b9b2691e4d3ad"
  ],
  "author": {
    "name": "Eric Laurent",
    "email": "elaurent@google.com",
    "time": "Thu Dec 01 15:28:29 2016 -0800"
  },
  "committer": {
    "name": "Feng Yu",
    "email": "feny@google.com",
    "time": "Fri Jan 20 01:10:13 2017 +0000"
  },
  "message": "DO NOT MERGE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n- Check reply size before writing status in EffectHandle::command()\n\nBug: 32707507\nBug: 32095713\n\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n(cherry picked from commit bc7f347ff5dc890ad0fa306f58d145e934e31ed4)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fab1ef534e7e947cc49324f75e7237819fc03263",
      "old_mode": 33188,
      "old_path": "services/audioflinger/AudioFlinger.cpp",
      "new_id": "c4efdba8eea96c30643987d737756f90bb9762ee",
      "new_mode": 33188,
      "new_path": "services/audioflinger/AudioFlinger.cpp"
    },
    {
      "type": "modify",
      "old_id": "08fa70d6b556119ebf799ce80e5a00011fd82e5f",
      "old_mode": 33188,
      "old_path": "services/audioflinger/AudioFlinger.h",
      "new_id": "064a3f10af8528c8408a3bb27c21693425821da1",
      "new_mode": 33188,
      "new_path": "services/audioflinger/AudioFlinger.h"
    },
    {
      "type": "modify",
      "old_id": "0ac23e737e7199983c22f139b2b7b66261d77bb6",
      "old_mode": 33188,
      "old_path": "services/audioflinger/Effects.cpp",
      "new_id": "eedcbe9abccf7b814488b522702f4d6d1f5da3bd",
      "new_mode": 33188,
      "new_path": "services/audioflinger/Effects.cpp"
    },
    {
      "type": "modify",
      "old_id": "6f93f81dac2fd15c326ef50c2145c57bb9921018",
      "old_mode": 33188,
      "old_path": "services/audioflinger/Effects.h",
      "new_id": "5586fdc17571b0ae04895e2ab9d51d1560b17e00",
      "new_mode": 33188,
      "new_path": "services/audioflinger/Effects.h"
    },
    {
      "type": "modify",
      "old_id": "71fc498f4bb49a47b43173c50c3c6c90dff624ff",
      "old_mode": 33188,
      "old_path": "services/audioflinger/Threads.cpp",
      "new_id": "18bf72e962387f34c02f414b88dede98261a4e2c",
      "new_mode": 33188,
      "new_path": "services/audioflinger/Threads.cpp"
    },
    {
      "type": "modify",
      "old_id": "46ac300258c31194b3a2a15a245afc10757b2549",
      "old_mode": 33188,
      "old_path": "services/audioflinger/Threads.h",
      "new_id": "3f980816d5b0354a341374832f2924a0c21fe342",
      "new_mode": 33188,
      "new_path": "services/audioflinger/Threads.h"
    },
    {
      "type": "modify",
      "old_id": "ca365a5e12a04ac31eee2fac32684d0ac895b42f",
      "old_mode": 33188,
      "old_path": "services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp",
      "new_id": "313d56e2896e70b46e6693b55d92e2ce27dd2e0a",
      "new_mode": 33188,
      "new_path": "services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp"
    }
  ]
}
