)]}'
{
  "commit": "fbf56acd9fc6b26f7cf0275ef6ccfb808c18d363",
  "tree": "04d1f4310c40f072b8efd9ae4d3cdf8aad2100e3",
  "parents": [
    "4468344c8fdfdd7df068d5abefe2d8615fd6b431"
  ],
  "author": {
    "name": "jiabin",
    "email": "jiabin@google.com",
    "time": "Tue Oct 20 23:45:12 2026"
  },
  "committer": {
    "name": "jiabin",
    "email": "jiabin@google.com",
    "time": "Tue Oct 20 23:45:12 2026"
  },
  "message": "OboeTester: handle rerouting in the Error Callback test\n\nStarting from Android 17, a stream on the legacy path may be rerouted\ninstead of disconnected when a headset is plugged or unplugged. In that\ncase the error callback never fires and the Error Callback test in\nOboeTester never reports PASS.\n\nRegister a routing callback (when the platform supports it) and run the\nsame \"delete the callback while it is in use\" experiment from\nonRoutingChanged(). A routing callback that merely reports the initial\ndevices is ignored so the test still requires a real plug/unplug event.\ncleanup() is serialized with a mutex because both the error callback and\nthe routing callback may fire for the same event on MMAP streams.\n\nUnexpected (non-disconnect) errors are now reported through a separate\ngetCallbackError() so the UI can show a clear failure message instead of\na bogus magic value.\n\nLibrary changes:\n- Add virtual destructor to AudioStreamRoutingCallback.\n- Add OboeExtensions::isRoutingChangedCallbackSupported().\n\nBug: 560318727\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ce4285f5c9a086a21095c25c34767c544f1032ab",
      "old_mode": 33188,
      "old_path": "apps/OboeTester/app/src/main/cpp/TestErrorCallback.cpp",
      "new_id": "0e438858278de0a41ebf616c2bbef00f6ecb8d7f",
      "new_mode": 33188,
      "new_path": "apps/OboeTester/app/src/main/cpp/TestErrorCallback.cpp"
    },
    {
      "type": "modify",
      "old_id": "d7ce8980daa4bfe3d3bcbbcd17dd811312da259d",
      "old_mode": 33188,
      "old_path": "apps/OboeTester/app/src/main/cpp/TestErrorCallback.h",
      "new_id": "2b6735ceaa5d06e0861542deca8b5ca68301b6c4",
      "new_mode": 33188,
      "new_path": "apps/OboeTester/app/src/main/cpp/TestErrorCallback.h"
    },
    {
      "type": "modify",
      "old_id": "0b8bfff0986f9f847030a5de3380efea575c6080",
      "old_mode": 33188,
      "old_path": "apps/OboeTester/app/src/main/cpp/jni-bridge.cpp",
      "new_id": "a0b10eaaa01d874958bd7f662ebc7014d4631ff0",
      "new_mode": 33188,
      "new_path": "apps/OboeTester/app/src/main/cpp/jni-bridge.cpp"
    },
    {
      "type": "modify",
      "old_id": "d8545e387c5befd55e5f1ed24a70bce52c92eb8f",
      "old_mode": 33188,
      "old_path": "apps/OboeTester/app/src/main/java/com/mobileer/oboetester/TestErrorCallbackActivity.java",
      "new_id": "5b1fb5882b31032144d75df838369ac32f07bcc2",
      "new_mode": 33188,
      "new_path": "apps/OboeTester/app/src/main/java/com/mobileer/oboetester/TestErrorCallbackActivity.java"
    },
    {
      "type": "modify",
      "old_id": "ff4830814601b9e2566f9fefaf65364cbb512232",
      "old_mode": 33188,
      "old_path": "apps/OboeTester/app/src/main/res/values/strings.xml",
      "new_id": "5c5f83d827bd5bac37c660ceca144ee29944e2ec",
      "new_mode": 33188,
      "new_path": "apps/OboeTester/app/src/main/res/values/strings.xml"
    },
    {
      "type": "modify",
      "old_id": "e6ac8fc5867d1deb1662ee8e6a5e16de3397ed20",
      "old_mode": 33188,
      "old_path": "include/oboe/AudioStreamCallback.h",
      "new_id": "456aa9b0e7a4a27110abc4442b78bc95e4b57f2a",
      "new_mode": 33188,
      "new_path": "include/oboe/AudioStreamCallback.h"
    },
    {
      "type": "modify",
      "old_id": "fdf661215de22c1d3157ccf7de8b550daeeb07ce",
      "old_mode": 33188,
      "old_path": "include/oboe/OboeExtensions.h",
      "new_id": "0c59daebc5512f67427536c0c5d615bde04b8598",
      "new_mode": 33188,
      "new_path": "include/oboe/OboeExtensions.h"
    },
    {
      "type": "modify",
      "old_id": "33f703b22ea8892e3d833adc29bdf346215536ce",
      "old_mode": 33188,
      "old_path": "src/aaudio/AAudioExtensions.h",
      "new_id": "29276eb8df3456226e9f36cb0eeafa3b0e77663f",
      "new_mode": 33188,
      "new_path": "src/aaudio/AAudioExtensions.h"
    },
    {
      "type": "modify",
      "old_id": "bc7446893546586177eb67f588283957ebda81c8",
      "old_mode": 33188,
      "old_path": "src/common/OboeExtensions.cpp",
      "new_id": "82c49abd45a6cb222afa9d00644dcf9de8481585",
      "new_mode": 33188,
      "new_path": "src/common/OboeExtensions.cpp"
    }
  ]
}
