{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":122212240,"defaultBranch":"master","name":"ioio","ownerLogin":"XCSoar","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2018-02-20T14:54:34.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/861328?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1683541465.0","currentOid":""},"activityList":{"items":[{"before":"4dd7e3d6632896b75438606b8c92530938eb1e70","after":"bbcdecee6d2df636da5f5a5445c04edf13106645","ref":"refs/heads/6.2.0+xcsoar","pushedAt":"2023-05-19T11:54:03.761Z","pushType":"push","commitsCount":3,"pusher":{"login":"MaxKellermann","name":"Max Kellermann","path":"/MaxKellermann","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1443144?s=80&v=4"},"commit":{"message":"AccessoryConnectionBootstrap: move handshake out of `synchronized`\n\nDoing blocking operations inside a `synchronized` block can lock up\nthe application (until the user unplugs the IOIO board). By moving\nthis handshake to waitForHandshake() which is not `synchronized`, the\noperation can be canceled by invoking disconnect().","shortMessageHtmlLink":"AccessoryConnectionBootstrap: move handshake out of synchronized"}},{"before":"7816f6ef9eed945798c88ad45bc6f481cb75c65c","after":"4dd7e3d6632896b75438606b8c92530938eb1e70","ref":"refs/heads/6.2.0+xcsoar","pushedAt":"2023-05-19T11:23:48.722Z","pushType":"push","commitsCount":1,"pusher":{"login":"MaxKellermann","name":"Max Kellermann","path":"/MaxKellermann","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1443144?s=80&v=4"},"commit":{"message":"AccessoryConnectionBootstrap: remove Adapter, use UsbManager directly\n\nI disabled the legacy API 9 years ago in commit f17bac4c4f4ce and\nnever looked back. Let's remove the whole Adapter class which has\nbeen pointless all these 9 years.","shortMessageHtmlLink":"AccessoryConnectionBootstrap: remove Adapter, use UsbManager directly"}},{"before":"a085be95a63b4c63c50136af5f0ec3dcb19d3fcb","after":"7816f6ef9eed945798c88ad45bc6f481cb75c65c","ref":"refs/heads/6.2.0+xcsoar","pushedAt":"2023-05-19T11:04:55.525Z","pushType":"push","commitsCount":1,"pusher":{"login":"MaxKellermann","name":"Max Kellermann","path":"/MaxKellermann","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1443144?s=80&v=4"},"commit":{"message":"AccessoryConnectionBootstrap: add missing `null` check in `finally` block\n\nIf the connection was canceled by disconnect() in another thread, then\n`fileDescriptor_` can be `null`.","shortMessageHtmlLink":"AccessoryConnectionBootstrap: add missing null check in finally b…"}},{"before":"976e3c3a57959145aae478cdaffbc62ad4b7e230","after":"a085be95a63b4c63c50136af5f0ec3dcb19d3fcb","ref":"refs/heads/6.2.0+xcsoar","pushedAt":"2023-05-19T10:41:27.798Z","pushType":"push","commitsCount":1,"pusher":{"login":"MaxKellermann","name":"Max Kellermann","path":"/MaxKellermann","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1443144?s=80&v=4"},"commit":{"message":"{Accessory,Device}ConnectionBootstrap: add PendingIntent.FLAG_IMMUTABLE\n\nFixes:\n\n java.lang.IllegalArgumentException: org.xcsoar.testing: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.","shortMessageHtmlLink":"{Accessory,Device}ConnectionBootstrap: add PendingIntent.FLAG_IMMUTABLE"}},{"before":"be1f0aec21ce8e7c4bcb6ad8139a6bc63b6c31ef","after":"976e3c3a57959145aae478cdaffbc62ad4b7e230","ref":"refs/heads/6.2.0+xcsoar","pushedAt":"2023-05-08T10:39:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"MaxKellermann","name":"Max Kellermann","path":"/MaxKellermann","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1443144?s=80&v=4"},"commit":{"message":"PulseInput: comment out deprecated method waitPulseGetDuration()","shortMessageHtmlLink":"PulseInput: comment out deprecated method waitPulseGetDuration()"}},{"before":null,"after":"be1f0aec21ce8e7c4bcb6ad8139a6bc63b6c31ef","ref":"refs/heads/6.2.0+xcsoar","pushedAt":"2023-05-08T10:24:25.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MaxKellermann","name":"Max Kellermann","path":"/MaxKellermann","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1443144?s=80&v=4"},"commit":{"message":"IOIOImpl: obey IOIOConnection.canClose()\n\nFixes reconnect errors in \"accessory\" mode. The InputStream.close()\ncall in IOIOProtocol.IncomingThread.run() closes the USB accessory\nfile descriptor without telling AccessoryConnectionBootstrap. That\nclass will never notice the file descriptor was invalidated, and will\nrepeatedly try using it, each time failing with EBADF.\n\nBy obeying IOIOConnection.canClose(), the existing file descriptor can\nbe reused.","shortMessageHtmlLink":"IOIOImpl: obey IOIOConnection.canClose()"}},{"before":null,"after":"40615b0235430403604f612b22590c5369eba4fc","ref":"refs/heads/5.05+xcsoar","pushedAt":"2023-05-08T10:08:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"MaxKellermann","name":"Max Kellermann","path":"/MaxKellermann","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1443144?s=80&v=4"},"commit":{"message":"BluetoothIOIOConnectionBootstrap: check getName()!=null\n\nAccording to the Android API documentation, BluetoothDevice.getName()\ncan return null \"if there was a problem\". The missing null check was\ncausing bug report https://bugs.xcsoar.org/ticket/3744","shortMessageHtmlLink":"BluetoothIOIOConnectionBootstrap: check getName()!=null"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADMCAyegA","startCursor":null,"endCursor":null}},"title":"Activity · XCSoar/ioio"}