{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":76838017,"defaultBranch":"develop","name":"iina","ownerLogin":"iina","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-12-19T07:18:45.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/35151645?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1719287370.0","currentOid":""},"activityList":{"items":[{"before":"91659c2b44a03f4acf8a78111fa0d8240eb21874","after":"bddc901b677c2e1a1d282eb5876ce398810b7956","ref":"refs/heads/secsub-settings","pushedAt":"2024-06-26T00:57:57.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"lhc70000","name":"Hechen Li","path":"/lhc70000","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8478049?s=80&v=4"},"commit":{"message":"Use default color well on macOS 13 and above","shortMessageHtmlLink":"Use default color well on macOS 13 and above"}},{"before":"f703ae020ab670a12cdd527c62193bbee40003e9","after":"a258c345b3e7883583b1a55f6656073aaa26b3ad","ref":"refs/heads/develop","pushedAt":"2024-06-25T06:07:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"},"commit":{"message":"Added .lrc file to supported subtitles list, fix #3192","shortMessageHtmlLink":"Added .lrc file to supported subtitles list, fix #3192"}},{"before":"ee104961f5e053e6e9a79e3e6325d063d5943868","after":"f703ae020ab670a12cdd527c62193bbee40003e9","ref":"refs/heads/develop","pushedAt":"2024-06-25T05:50:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"},"commit":{"message":"Remove Midi from imported type identifiers, fix #2235","shortMessageHtmlLink":"Remove Midi from imported type identifiers, fix #2235"}},{"before":"61c19863e8365d9e3d63ab2e9a66e03bca35be2c","after":null,"ref":"refs/heads/tsan","pushedAt":"2024-06-25T03:49:30.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"lhc70000","name":"Hechen Li","path":"/lhc70000","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8478049?s=80&v=4"}},{"before":"db436141ffeb6fdb5e76a13a595687ad36b82d32","after":"ee104961f5e053e6e9a79e3e6325d063d5943868","ref":"refs/heads/develop","pushedAt":"2024-06-25T03:49:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"lhc70000","name":"Hechen Li","path":"/lhc70000","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8478049?s=80&v=4"},"commit":{"message":"Fix data races, #3829, #3830, #3936, #3937 (#4819)\n\n* Fix data races, #3829, #3830, #3936, #3937\r\n\r\nThis commit will:\r\n- Change MPVController to perform most event processing using the main\r\n thread\r\n- Remove dispatching to main queue from PlayerCore methods now being\r\n called by MPVController using the main thread\r\n- Add the Atomic property wrapper to the playlistTotalLength and\r\n playlistTotalLengthIsReady PlaylistViewController properties\r\n- Add the Atomic property wrapper to the following PlayerInfo\r\n properties:\r\n - aid\r\n - secondSid\r\n - sid\r\n - subTracks\r\n - thumbnails\r\n - thumbnailsProgress\r\n - thumbnailsReady\r\n - vid\r\n- Change references to subTracks to lock the array\r\n- Change references to thumbnails to lock the array\r\n- Add the Atomic property wrapper to the hooks MPVController property\r\n- Change references to hooks to lock the array\r\n- Add the Atomic property wrapper to the playlistTotalLengthIsReady and\r\n playlistTotalLength PlaylistViewController properties\r\n- Change PlayerCore.playbackRestarted to re-enable the OSD by\r\n dispatching to the main thread using async with a delay instead of\r\n using a timer\r\n- Add the method logPropertyValueError to MPVController to report when\r\n property values can not be converted to the expected type\r\n- Replace MPVController method reEnableOSDAfterFileLoading with inline\r\n code\r\n\r\nThese changes will correct data races between the main thread and the\r\nthread for the MPVController com.colliderli.iina.controller queue by\r\nchanging MPVController to dispatch work to the main queue. This will\r\nsimplify the code as in some cases work was being done on both the\r\ncontroller queue and the main queue as some processing required calling\r\nAppKit methods that must be run on the main thread.\r\n\r\nThese changes will also correct the data races between the main thread\r\nand PlayerCore backgroundQueue used for loading subtitles by adding the\r\nAtomic property wrapper to properties shared between these threads and\r\nusing the withLock method. Similar changes correct the data races\r\nbetween the main thread and PlayerCore thumbnailQueue.\r\n\r\nThese changes will also fix data races with the\r\nplaylistTotalLengthIsReady and playlistTotalLength properties.\r\n\r\n* Fix data races, #3829, #3830, #3936, #3937\r\n\r\nThis commit will:\r\n- Change MPVController to perform most event processing using the main\r\n thread\r\n- Remove dispatching to main queue from PlayerCore methods now being\r\n called by MPVController using the main thread\r\n- Add the Atomic property wrapper to the playlistTotalLength and\r\n playlistTotalLengthIsReady PlaylistViewController properties\r\n- Add the Atomic property wrapper to the following PlayerInfo\r\n properties:\r\n - aid\r\n - secondSid\r\n - sid\r\n - subTracks\r\n - thumbnails\r\n - thumbnailsProgress\r\n - thumbnailsReady\r\n - vid\r\n- Change references to subTracks to lock the array\r\n- Change references to thumbnails to lock the array\r\n- Add the Atomic property wrapper to the hooks MPVController property\r\n- Change references to hooks to lock the array\r\n- Add the Atomic property wrapper to the playlistTotalLengthIsReady and\r\n playlistTotalLength PlaylistViewController properties\r\n- Change PlayerCore.playbackRestarted to re-enable the OSD by\r\n dispatching to the main thread using async with a delay instead of\r\n using a timer\r\n- Add the method logPropertyValueError to MPVController to report when\r\n property values can not be converted to the expected type\r\n- Replace MPVController method reEnableOSDAfterFileLoading with inline\r\n code\r\n\r\nThese changes will correct data races between the main thread and the\r\nthread for the MPVController com.colliderli.iina.controller queue by\r\nchanging MPVController to dispatch work to the main queue. This will\r\nsimplify the code as in some cases work was being done on both the\r\ncontroller queue and the main queue as some processing required calling\r\nAppKit methods that must be run on the main thread.\r\n\r\nThese changes will also correct the data races between the main thread\r\nand PlayerCore backgroundQueue used for loading subtitles by adding the\r\nAtomic property wrapper to properties shared between these threads and\r\nusing the withLock method. Similar changes correct the data races\r\nbetween the main thread and PlayerCore thumbnailQueue.\r\n\r\nThese changes will also fix data races with the\r\nplaylistTotalLengthIsReady and playlistTotalLength properties.\r\n\r\n* Fix data races, #3829, #3830, #3936, #3937\r\n\r\nThis commit will:\r\n- Change MPVController to perform most event processing using the main\r\n thread\r\n- Remove dispatching to main queue from PlayerCore methods now being\r\n called by MPVController using the main thread\r\n- Add the Atomic property wrapper to the playlistTotalLength and\r\n playlistTotalLengthIsReady PlaylistViewController properties\r\n- Add the Atomic property wrapper to the following PlayerInfo\r\n properties:\r\n - aid\r\n - secondSid\r\n - sid\r\n - subTracks\r\n - thumbnails\r\n - thumbnailsProgress\r\n - thumbnailsReady\r\n - vid\r\n- Change references to subTracks to lock the array\r\n- Change references to thumbnails to lock the array\r\n- Add the Atomic property wrapper to the hooks MPVController property\r\n- Change references to hooks to lock the array\r\n- Add the Atomic property wrapper to the playlistTotalLengthIsReady and\r\n playlistTotalLength PlaylistViewController properties\r\n- Change PlayerCore.playbackRestarted to re-enable the OSD by\r\n dispatching to the main thread using async with a delay instead of\r\n using a timer\r\n- Add the method logPropertyValueError to MPVController to report when\r\n property values can not be converted to the expected type\r\n- Replace MPVController method reEnableOSDAfterFileLoading with inline\r\n code\r\n\r\nThese changes will correct data races between the main thread and the\r\nthread for the MPVController com.colliderli.iina.controller queue by\r\nchanging MPVController to dispatch work to the main queue. This will\r\nsimplify the code as in some cases work was being done on both the\r\ncontroller queue and the main queue as some processing required calling\r\nAppKit methods that must be run on the main thread.\r\n\r\nThese changes will also correct the data races between the main thread\r\nand PlayerCore backgroundQueue used for loading subtitles by adding the\r\nAtomic property wrapper to properties shared between these threads and\r\nusing the withLock method. Similar changes correct the data races\r\nbetween the main thread and PlayerCore thumbnailQueue.\r\n\r\nThese changes will also fix data races with the\r\nplaylistTotalLengthIsReady and playlistTotalLength properties.","shortMessageHtmlLink":"Fix data races, #3829, #3830, #3936, #3937 (#4819)"}},{"before":"af95ddd518fab9833d4e9c1b7dd66df3c96d689c","after":"91659c2b44a03f4acf8a78111fa0d8240eb21874","ref":"refs/heads/secsub-settings","pushedAt":"2024-06-24T19:47:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"low-batt","name":null,"path":"/low-batt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86170219?s=80&v=4"},"commit":{"message":"Add english localization for new segmented control labels","shortMessageHtmlLink":"Add english localization for new segmented control labels"}},{"before":null,"after":"0bde5f90767177ccce02c77273d2b58995316ba3","ref":"refs/heads/fix-pinch-shifts-window","pushedAt":"2024-06-24T12:46:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"},"commit":{"message":"Fix the window is shifted when pinching to resize, #4681\n\n- Cache the window frame when started pinching to resize\n- Used the cahced window frame instead of the current window frame to\n avoid accumulated rounding errors","shortMessageHtmlLink":"Fix the window is shifted when pinching to resize, #4681"}},{"before":"b687040030b0f389853834a21c66346326fd7c71","after":"4fe5944e25ae84b46d7e8e629a6402c962e54532","ref":"refs/heads/new-pref-ui","pushedAt":"2024-06-24T04:20:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lhc70000","name":"Hechen Li","path":"/lhc70000","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8478049?s=80&v=4"},"commit":{"message":"--wip--","shortMessageHtmlLink":"--wip--"}},{"before":"012f22f530eac2ee0f642306fa1f990f55f8d0ed","after":null,"ref":"refs/heads/secure-playlist","pushedAt":"2024-06-24T04:09:19.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"}},{"before":"0b6a5c418b945641bbea653fdbd14302510a12df","after":"db436141ffeb6fdb5e76a13a595687ad36b82d32","ref":"refs/heads/develop","pushedAt":"2024-06-24T04:09:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"},"commit":{"message":"Fix PlaylistViewController uses deprecated methods, #5007 (#5008)\n\nThis commit will change PlaylistViewController to use methods that\r\nsupport secure coding instead of the deprecated methods.","shortMessageHtmlLink":"Fix PlaylistViewController uses deprecated methods, #5007 (#5008)"}},{"before":"21dd20a4b46ba6ca7861f62efd763ec964e70273","after":"af95ddd518fab9833d4e9c1b7dd66df3c96d689c","ref":"refs/heads/secsub-settings","pushedAt":"2024-06-24T03:37:24.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"},"commit":{"message":"Implement basic functions for secondary subs","shortMessageHtmlLink":"Implement basic functions for secondary subs"}},{"before":"0b6a5c418b945641bbea653fdbd14302510a12df","after":"9dcd8f74e11c1fdf1c2340563065d2975cb94b46","ref":"refs/heads/watch-later-options","pushedAt":"2024-06-24T02:39:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"low-batt","name":null,"path":"/low-batt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86170219?s=80&v=4"},"commit":{"message":"Update watch-later-options workaround for mpv 0.38.0\n\nThis commit will:\n- Add a new method userOptionsContains to MPVController\n- Remove the workaround from mpvInit for secondary-sub-visibility\n missing from watch-later-options\n- Add a workaround to mpvInit for secondary-sid and secondary-sub-delay\n missing from watch-later-options\n- Add sorting of the logged watch-later-options value\n\nThe problem in mpv with secondary-sub-visibility missing from\nwatch-later-options has been fixed with the upgrade to mpv 0.38.0.\nHowever secondary-sid and secondary-sub-delay are missing from\nwatch-later-options in mpv 0.38.0 (mpv issue #14417). This commit\nupdates the workaround for 0.38.0. Issue #14417 has been fixed in mpv,\nso the next time mpv is upgraded this workaround can finally be removed.","shortMessageHtmlLink":"Update watch-later-options workaround for mpv 0.38.0"}},{"before":null,"after":"0b6a5c418b945641bbea653fdbd14302510a12df","ref":"refs/heads/watch-later-options","pushedAt":"2024-06-24T01:17:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"low-batt","name":null,"path":"/low-batt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86170219?s=80&v=4"},"commit":{"message":"Fix CC_MD5 deprecated warning (#5017)\n\nThis commit will:\r\n- Remove the NSData extension that was using the deprecated Common\r\n Crypto method\r\n- Change the md5 property in the Data extension to generate the MD5 hash\r\n using CryptoKit instead of calling the NSData method\r\n\r\nThese changes correct a compiler warning that CC_MD5 is deprecated\r\nbecause it is cryptographically broken and should not be used in\r\nsecurity contexts. This warning is not generated for the CryptoKit\r\nmethod. With CryptoKit you must access the method using the CryptoKit\r\nInsecure enum, thus there is no need to warn the programmer that MD5\r\nis insecure.","shortMessageHtmlLink":"Fix CC_MD5 deprecated warning (#5017)"}},{"before":"3e310d01530c31e9610c667b2422a81960f016a8","after":null,"ref":"refs/heads/md5-warning","pushedAt":"2024-06-24T00:03:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"}},{"before":"e862a9122f8ef61036bebc51a9c6a79f701f6cf4","after":"0b6a5c418b945641bbea653fdbd14302510a12df","ref":"refs/heads/develop","pushedAt":"2024-06-24T00:03:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"},"commit":{"message":"Fix CC_MD5 deprecated warning (#5017)\n\nThis commit will:\r\n- Remove the NSData extension that was using the deprecated Common\r\n Crypto method\r\n- Change the md5 property in the Data extension to generate the MD5 hash\r\n using CryptoKit instead of calling the NSData method\r\n\r\nThese changes correct a compiler warning that CC_MD5 is deprecated\r\nbecause it is cryptographically broken and should not be used in\r\nsecurity contexts. This warning is not generated for the CryptoKit\r\nmethod. With CryptoKit you must access the method using the CryptoKit\r\nInsecure enum, thus there is no need to warn the programmer that MD5\r\nis insecure.","shortMessageHtmlLink":"Fix CC_MD5 deprecated warning (#5017)"}},{"before":"b73de2561acc57cc05f29c226af6e06ee68117a1","after":"3e310d01530c31e9610c667b2422a81960f016a8","ref":"refs/heads/md5-warning","pushedAt":"2024-06-23T18:33:19.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"low-batt","name":null,"path":"/low-batt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86170219?s=80&v=4"},"commit":{"message":"Fix CC_MD5 deprecated warning\n\nThis commit will:\n- Remove the NSData extension that was using the deprecated Common\n Crypto method\n- Change the md5 property in the Data extension to generate the MD5 hash\n using CryptoKit instead of calling the NSData method\n\nThese changes correct a compiler warning that CC_MD5 is deprecated\nbecause it is cryptographically broken and should not be used in\nsecurity contexts. This warning is not generated for the CryptoKit\nmethod. With CryptoKit you must access the method using the CryptoKit\nInsecure enum, thus there is no need to warn the programmer that MD5\nis insecure.","shortMessageHtmlLink":"Fix CC_MD5 deprecated warning"}},{"before":null,"after":"b687040030b0f389853834a21c66346326fd7c71","ref":"refs/heads/new-pref-ui","pushedAt":"2024-06-23T04:32:33.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"lhc70000","name":"Hechen Li","path":"/lhc70000","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8478049?s=80&v=4"},"commit":{"message":"--wip--","shortMessageHtmlLink":"--wip--"}},{"before":"e862a9122f8ef61036bebc51a9c6a79f701f6cf4","after":"0a18a5995b4c7a2b1e17b864a20a7a9a623bfd54","ref":"refs/heads/icon-deprecated","pushedAt":"2024-06-23T04:08:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"low-batt","name":null,"path":"/low-batt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86170219?s=80&v=4"},"commit":{"message":"Fix icon(forFileType:) deprecated warning\n\nThe commit will change the call to the deprecated method icon(forFileType:) in History WindowController.outlineView to call icon(forFile:) instead.","shortMessageHtmlLink":"Fix icon(forFileType:) deprecated warning"}},{"before":null,"after":"e862a9122f8ef61036bebc51a9c6a79f701f6cf4","ref":"refs/heads/icon-deprecated","pushedAt":"2024-06-23T04:07:14.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"low-batt","name":null,"path":"/low-batt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86170219?s=80&v=4"},"commit":{"message":"Move to macos-latest and xcode 15.4 on CI (#5016)\n\n* Move to macos-latest on CI\n\nNow macos-latest is based on macos-14 with arm64.\r\n\r\nSee https://github.com/actions/runner-images?tab=readme-ov-file#available-images.\n\n* Use xcode 15.4 on CI","shortMessageHtmlLink":"Move to macos-latest and xcode 15.4 on CI (#5016)"}},{"before":"e862a9122f8ef61036bebc51a9c6a79f701f6cf4","after":"b73de2561acc57cc05f29c226af6e06ee68117a1","ref":"refs/heads/md5-warning","pushedAt":"2024-06-23T03:38:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"low-batt","name":null,"path":"/low-batt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86170219?s=80&v=4"},"commit":{"message":"Fix CC_MD5 deprecated warning\n\nThe commit will change the md5 method in the NSData extension to use\nCryptoKit instead of the Common Crypto method. This corrects a compiler\nwarning that CC_MD5 is deprecated.","shortMessageHtmlLink":"Fix CC_MD5 deprecated warning"}},{"before":null,"after":"e862a9122f8ef61036bebc51a9c6a79f701f6cf4","ref":"refs/heads/md5-warning","pushedAt":"2024-06-23T03:34:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"low-batt","name":null,"path":"/low-batt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86170219?s=80&v=4"},"commit":{"message":"Move to macos-latest and xcode 15.4 on CI (#5016)\n\n* Move to macos-latest on CI\n\nNow macos-latest is based on macos-14 with arm64.\r\n\r\nSee https://github.com/actions/runner-images?tab=readme-ov-file#available-images.\n\n* Use xcode 15.4 on CI","shortMessageHtmlLink":"Move to macos-latest and xcode 15.4 on CI (#5016)"}},{"before":"9978a1d68ebc6d8e233275ac035fc8b2855a1d52","after":"e862a9122f8ef61036bebc51a9c6a79f701f6cf4","ref":"refs/heads/develop","pushedAt":"2024-06-23T00:59:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"},"commit":{"message":"Move to macos-latest and xcode 15.4 on CI (#5016)\n\n* Move to macos-latest on CI\n\nNow macos-latest is based on macos-14 with arm64.\r\n\r\nSee https://github.com/actions/runner-images?tab=readme-ov-file#available-images.\n\n* Use xcode 15.4 on CI","shortMessageHtmlLink":"Move to macos-latest and xcode 15.4 on CI (#5016)"}},{"before":"5e9ff7cf577343e6c48df069bc2769dfd6c0f7be","after":"61c19863e8365d9e3d63ab2e9a66e03bca35be2c","ref":"refs/heads/tsan","pushedAt":"2024-06-22T22:05:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"low-batt","name":null,"path":"/low-batt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86170219?s=80&v=4"},"commit":{"message":"Fix data races, #3829, #3830, #3936, #3937\n\nThis commit will:\n- Change MPVController to perform most event processing using the main\n thread\n- Remove dispatching to main queue from PlayerCore methods now being\n called by MPVController using the main thread\n- Add the Atomic property wrapper to the playlistTotalLength and\n playlistTotalLengthIsReady PlaylistViewController properties\n- Add the Atomic property wrapper to the following PlayerInfo\n properties:\n - aid\n - secondSid\n - sid\n - subTracks\n - thumbnails\n - thumbnailsProgress\n - thumbnailsReady\n - vid\n- Change references to subTracks to lock the array\n- Change references to thumbnails to lock the array\n- Add the Atomic property wrapper to the hooks MPVController property\n- Change references to hooks to lock the array\n- Add the Atomic property wrapper to the playlistTotalLengthIsReady and\n playlistTotalLength PlaylistViewController properties\n- Change PlayerCore.playbackRestarted to re-enable the OSD by\n dispatching to the main thread using async with a delay instead of\n using a timer\n- Add the method logPropertyValueError to MPVController to report when\n property values can not be converted to the expected type\n- Replace MPVController method reEnableOSDAfterFileLoading with inline\n code\n\nThese changes will correct data races between the main thread and the\nthread for the MPVController com.colliderli.iina.controller queue by\nchanging MPVController to dispatch work to the main queue. This will\nsimplify the code as in some cases work was being done on both the\ncontroller queue and the main queue as some processing required calling\nAppKit methods that must be run on the main thread.\n\nThese changes will also correct the data races between the main thread\nand PlayerCore backgroundQueue used for loading subtitles by adding the\nAtomic property wrapper to properties shared between these threads and\nusing the withLock method. Similar changes correct the data races\nbetween the main thread and PlayerCore thumbnailQueue.\n\nThese changes will also fix data races with the\nplaylistTotalLengthIsReady and playlistTotalLength properties.","shortMessageHtmlLink":"Fix data races, #3829, #3830, #3936, #3937"}},{"before":"1ebe0f459627c8e10639bd65276e29bd57629fdd","after":"5e9ff7cf577343e6c48df069bc2769dfd6c0f7be","ref":"refs/heads/tsan","pushedAt":"2024-06-22T21:13:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"low-batt","name":null,"path":"/low-batt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86170219?s=80&v=4"},"commit":{"message":"Fix data races, #3829, #3830, #3936, #3937\n\nThis commit will:\n- Change MPVController to perform most event processing using the main\n thread\n- Remove dispatching to main queue from PlayerCore methods now being\n called by MPVController using the main thread\n- Add the Atomic property wrapper to the playlistTotalLength and\n playlistTotalLengthIsReady PlaylistViewController properties\n- Add the Atomic property wrapper to the following PlayerInfo\n properties:\n - aid\n - secondSid\n - sid\n - subTracks\n - thumbnails\n - thumbnailsProgress\n - thumbnailsReady\n - vid\n- Change references to subTracks to lock the array\n- Change references to thumbnails to lock the array\n- Add the Atomic property wrapper to the hooks MPVController property\n- Change references to hooks to lock the array\n- Add the Atomic property wrapper to the playlistTotalLengthIsReady and\n playlistTotalLength PlaylistViewController properties\n- Change PlayerCore.playbackRestarted to re-enable the OSD by\n dispatching to the main thread using async with a delay instead of\n using a timer\n- Add the method logPropertyValueError to MPVController to report when\n property values can not be converted to the expected type\n- Replace MPVController method reEnableOSDAfterFileLoading with inline\n code\n\nThese changes will correct data races between the main thread and the\nthread for the MPVController com.colliderli.iina.controller queue by\nchanging MPVController to dispatch work to the main queue. This will\nsimplify the code as in some cases work was being done on both the\ncontroller queue and the main queue as some processing required calling\nAppKit methods that must be run on the main thread.\n\nThese changes will also correct the data races between the main thread\nand PlayerCore backgroundQueue used for loading subtitles by adding the\nAtomic property wrapper to properties shared between these threads and\nusing the withLock method. Similar changes correct the data races\nbetween the main thread and PlayerCore thumbnailQueue.\n\nThese changes will also fix data races with the\nplaylistTotalLengthIsReady and playlistTotalLength properties.","shortMessageHtmlLink":"Fix data races, #3829, #3830, #3936, #3937"}},{"before":"4ee604d5586b4b3252d01565fbff47657cab7663","after":null,"ref":"refs/heads/fix-jittering-liveresize","pushedAt":"2024-06-22T15:25:43.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"}},{"before":"da3292ea94c87628687804d065f29075796329d1","after":null,"ref":"refs/heads/do-not-mount","pushedAt":"2024-06-22T15:20:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"lhc70000","name":"Hechen Li","path":"/lhc70000","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8478049?s=80&v=4"}},{"before":"71cd9d6281cded1433363da18d98b2d0fbfa7229","after":"9978a1d68ebc6d8e233275ac035fc8b2855a1d52","ref":"refs/heads/develop","pushedAt":"2024-06-22T15:20:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lhc70000","name":"Hechen Li","path":"/lhc70000","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8478049?s=80&v=4"},"commit":{"message":"Fix if a NAS share cannot be reached, iina fails to start, #4973\n\nThis commit will:\n- Add a new preference enableRecentDocumentsWorkaround\n- Change the AppDelegate methods restoreRecentDocuments and\n saveRecentDocuments to not do anything if\n enableRecentDocumentsWorkaround has not been set to true\n- Change restoreRecentDocuments to use the options withoutMounting and\n withoutUI when creating a URL from bookmark data\n- Add code to restoreRecentDocuments to create a URL from a string if\n creating using bookmark data fails\n\nThis has to do with the workaround added for issue #4688 where starting\nwith Sonoma macOS erases the list of recent documents when an unsigned\nIINA executable is run. This affects developers as well as normal users\nthat test nightly builds. These changes correct the problem with IINA\ncausing macOS to prompt the user to mount volumes when the list of\nrecent documents contains files on volumes that are not mounted.\n\nHowever it is not possible to correct the long delays when the volume is\nmounted, but unreachable, such as a NAS that macOS does not know yet has\nbeen shutdown. For this reason this commit adds a preference that must\nbe set using terminal and the defaults command to enable the workaround.","shortMessageHtmlLink":"Fix if a NAS share cannot be reached, iina fails to start, #4973"}},{"before":"9893af45b903c06763e4da78e6520c70db988e18","after":"71cd9d6281cded1433363da18d98b2d0fbfa7229","ref":"refs/heads/develop","pushedAt":"2024-06-22T15:09:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"lhc70000","name":"Hechen Li","path":"/lhc70000","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8478049?s=80&v=4"},"commit":{"message":"Fix jittering when live resizing the main window (#5013)\n\n* Fix jittering when live resizing the main window\r\n\r\nSet `CAOpenGLLayer.isAsynchronous` to true when live resizing\r\n\r\nReference implementation: https://github.com/mpv-player/mpv/blob/4ec060f9465ad1b2151fdf36671681cd9900fc63/video/out/mac/gl_layer.swift\r\n\r\n* Set async when the window is resizing by pinching","shortMessageHtmlLink":"Fix jittering when live resizing the main window (#5013)"}},{"before":null,"after":"21dd20a4b46ba6ca7861f62efd763ec964e70273","ref":"refs/heads/secsub-settings","pushedAt":"2024-06-22T09:20:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"},"commit":{"message":"Update QuickSettingViewController.xib","shortMessageHtmlLink":"Update QuickSettingViewController.xib"}},{"before":"a7c2918e351b8bd7031fc0a0cacf650661e02915","after":"4ee604d5586b4b3252d01565fbff47657cab7663","ref":"refs/heads/fix-jittering-liveresize","pushedAt":"2024-06-22T06:56:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"uiryuu","name":"Yuze Jiang","path":"/uiryuu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20237141?s=80&v=4"},"commit":{"message":"Set async when the window is resizing by pinching","shortMessageHtmlLink":"Set async when the window is resizing by pinching"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEbzDjBwA","startCursor":null,"endCursor":null}},"title":"Activity ยท iina/iina"}