)]}'
{
  "commit": "abd788c203624930241f45f32b501c16936bd806",
  "tree": "2b37ea0501f4290ff66c3def72ce1c5d54767327",
  "parents": [
    "bd097fe80255d4df55b673f45d96d39db0d47886"
  ],
  "author": {
    "name": "osy",
    "email": "50960678+osy@users.noreply.github.com",
    "time": "Tue May 11 20:56:27 2021 -0700"
  },
  "committer": {
    "name": "Nathan Hjelm",
    "email": "hjelmn@google.com",
    "time": "Sun May 16 15:14:49 2021 -0600"
  },
  "message": "darwin: use detach kernel APIs for capture\n\nWhen libusb_detach_kernel_driver() is called on the first interface, we use\nthe capture re-enumerate APIs to force kernel drivers to detach. On\nsubsequent calls, a counter is incremented to keep track of the number of\ndetach calls. When libusb_attach_kernel_driver() is called for the same\nnumber of times, then we re-enumerate (reset) and let kernel drivers\nre-attach.\n\ndarwin_kernel_driver_active() is changed to attempt to claim an interface\nand return 1 only if a kIOReturnExclusiveAccess status is returned. The old\nimplementation which looks for a CFBundleID in the IORegistryEntry does not\nseem to work in all cases.\n\ndarwin_reset_device() is aware of the capture status and will re-set twice\nif capture mode is enabled: once to do a USB reset and again to re-capture.\n\nSigned-off-by: Nathan Hjelm \u003chjelmn@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e04ec67f3f12b29d0635b44d40d1ad7fc13b1083",
      "old_mode": 33188,
      "old_path": "libusb/core.c",
      "new_id": "7a2f6c37ce72e31d57ad5c2af22a3fbd1f26a459",
      "new_mode": 33188,
      "new_path": "libusb/core.c"
    },
    {
      "type": "modify",
      "old_id": "0a3b79f75b9ec1da1f08630c7bb7f21732d47908",
      "old_mode": 33188,
      "old_path": "libusb/os/darwin_usb.c",
      "new_id": "988ca9ee0840b6160c7032ef2dd4ae86d9a336d4",
      "new_mode": 33188,
      "new_path": "libusb/os/darwin_usb.c"
    },
    {
      "type": "modify",
      "old_id": "b799bfd4429e593fadb95b3e0704ea197a9b3177",
      "old_mode": 33188,
      "old_path": "libusb/os/darwin_usb.h",
      "new_id": "179341cf3d006334184918769559a2486d0fefda",
      "new_mode": 33188,
      "new_path": "libusb/os/darwin_usb.h"
    },
    {
      "type": "modify",
      "old_id": "8ed8ddc02983e101e0eb8f7b4f33ecd2fbe91d33",
      "old_mode": 33188,
      "old_path": "libusb/version_nano.h",
      "new_id": "fcbf3cd1f6b0cb8bb88ad3e2f8bf2ff759ef8c42",
      "new_mode": 33188,
      "new_path": "libusb/version_nano.h"
    }
  ]
}
