)]}'
{
  "commit": "ae29b7632ecf2068698c0d121cff284dcc82f4ec",
  "tree": "c8193b55997aa1f605a8c80acc76b0b21d101e4e",
  "parents": [
    "42bc0e946f8b986fb3aaada9980b496172e2b511"
  ],
  "author": {
    "name": "Eric Laurent",
    "email": "elaurent@google.com",
    "time": "Mon Mar 28 18:37:07 2011 -0700"
  },
  "committer": {
    "name": "Eric Laurent",
    "email": "elaurent@google.com",
    "time": "Tue Apr 05 12:05:41 2011 -0700"
  },
  "message": "New fix for issue 4111672: control block flags\n\nThe first fix (commit 913af0b4) is problematic because it makes threads\nin mediaserver process block on the cblk mutex. This is not permitted\nas it can cause audio to skip or worse have a malicious application\nprevent all audio playback by keeping the mutex locked.\n\nThe fix consists in using atomic operations when modifying the control\nblock flags.\n\nAlso fixed audio_track_cblk_t::framesReady() so that it doesn\u0027t block\nwhen called from AudioFlinger (only applies when a loop is active).\n\nChange-Id: Ibf0abb562ced3e9f64118afdd5036854bb959428\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "46101353e6500f216f1e8cef8f1e26ea33a59411",
      "old_mode": 33188,
      "old_path": "include/private/media/AudioTrackShared.h",
      "new_id": "1827c3ea2ba9d9d2993ff042ae614376bd496834",
      "new_mode": 33188,
      "new_path": "include/private/media/AudioTrackShared.h"
    },
    {
      "type": "modify",
      "old_id": "cee1c7540cddbead66a93197e44195353f5aeb56",
      "old_mode": 33188,
      "old_path": "media/libmedia/AudioRecord.cpp",
      "new_id": "5d74a0a33f8c0a734d8e7640c9afdecc12f928a6",
      "new_mode": 33188,
      "new_path": "media/libmedia/AudioRecord.cpp"
    },
    {
      "type": "modify",
      "old_id": "fb2ee0f813f3679aa34322388f684a20b216e9cd",
      "old_mode": 33188,
      "old_path": "media/libmedia/AudioTrack.cpp",
      "new_id": "66e11d282d72af17e8a39511b63595f41cf9daf6",
      "new_mode": 33188,
      "new_path": "media/libmedia/AudioTrack.cpp"
    },
    {
      "type": "modify",
      "old_id": "2702242f8d329c8e65213b54f871778349315c89",
      "old_mode": 33188,
      "old_path": "services/audioflinger/AudioFlinger.cpp",
      "new_id": "e27a10ff5eefa309c50c902a16d49d4c9d5d5c64",
      "new_mode": 33188,
      "new_path": "services/audioflinger/AudioFlinger.cpp"
    }
  ]
}
