Skip to content

Commit 61ff4bd

Browse files
Merge pull request #211 from kishikawakatsumi/ex
Ex
2 parents b0aa0d7 + 79faf04 commit 61ff4bd

File tree

3 files changed

+40
-36
lines changed

3 files changed

+40
-36
lines changed

.github/workflows/test.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ jobs:
1919
set -ex
2020
2121
brew update
22-
brew install docker docker-compose qemu
22+
brew install docker docker-buildx docker-compose qemu
23+
24+
mkdir -p ~/.docker/cli-plugins
25+
ln -sfn /opt/homebrew/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose
26+
ln -sfn /opt/homebrew/opt/docker-buildx/bin/docker-buildx ~/.docker/cli-plugins/docker-buildx
27+
2328
curl -L "https://raw.githubusercontent.com/Homebrew/homebrew-core/5d01145b5a83d32e5ebee11677884ee429a6be4e/Formula/l/lima.rb" \
2429
-o lima.rb
2530
curl -L "https://raw.githubusercontent.com/Homebrew/homebrew-core/b8276941690ad4235558c4848b747eb21656f178/Formula/c/colima.rb" \
@@ -35,6 +40,8 @@ jobs:
3540
sudo chmod +x "$LIMACTL_PATH"
3641
3742
colima start --network-address --arch arm64 --vm-type=qemu
43+
export DOCKER_BUILDKIT=1
44+
export COMPOSE_DOCKER_CLI_BUILD=1
3845
docker-compose up --detach
3946
4047
swift test

Examples/FileBrowser/FileBrowser (macOS)/MediaPlayerWindowController.swift

Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -53,29 +53,42 @@ class MediaPlayerWindowController: NSWindowController, NSWindowDelegate {
5353

5454
guard let videoPlayerViewController = contentViewController as? MediaPlayerViewController else { return }
5555

56-
let playerItem = AVPlayerItem(asset: asset)
56+
Task { @MainActor in
57+
do {
58+
let fileReader = try await treeAccessor.fileReader(path: path)
59+
_ = try await fileReader.read(offset: 0, length: 1)
5760

58-
let player = AVPlayer(playerItem: playerItem)
59-
videoPlayerViewController.playerView.player = player
61+
let playerItem = AVPlayerItem(asset: asset)
6062

61-
asset.loadTracks(withMediaType: .video) { (tracks, error) in
62-
guard let track = tracks?.first else { return }
63-
Task {
64-
let naturalSize = try await track.load(.naturalSize)
63+
let player = AVPlayer(playerItem: playerItem)
64+
videoPlayerViewController.playerView.player = player
6565

66-
await MainActor.run {
67-
guard let currentScreen = NSScreen.screens.first(where: { $0 == window.screen }) else {
68-
return
69-
}
66+
asset.loadTracks(withMediaType: .video) { (tracks, error) in
67+
guard let track = tracks?.first else { return }
68+
Task {
69+
let naturalSize = try await track.load(.naturalSize)
70+
71+
await MainActor.run {
72+
guard let currentScreen = NSScreen.screens.first(where: { $0 == window.screen }) else {
73+
return
74+
}
7075

71-
let rect = AVMakeRect(
72-
aspectRatio: CGSize(width: naturalSize.width, height: naturalSize.height),
73-
insideRect: currentScreen.visibleFrame
74-
)
75-
let contentSize = NSSize(width: min(rect.width, naturalSize.width), height: min(rect.height, naturalSize.height))
76+
let rect = AVMakeRect(
77+
aspectRatio: CGSize(width: naturalSize.width, height: naturalSize.height),
78+
insideRect: currentScreen.visibleFrame
79+
)
80+
let contentSize = NSSize(width: min(rect.width, naturalSize.width), height: min(rect.height, naturalSize.height))
7681

77-
window.setContentSize(contentSize)
78-
window.center()
82+
window.setContentSize(contentSize)
83+
window.center()
84+
85+
player.play()
86+
}
87+
}
88+
}
89+
} catch {
90+
_ = await MainActor.run {
91+
NSAlert(error: error).runModal()
7992
}
8093
}
8194
}
@@ -91,20 +104,4 @@ class MediaPlayerWindowController: NSWindowController, NSWindowDelegate {
91104

92105
class MediaPlayerViewController: NSViewController {
93106
@IBOutlet var playerView: AVPlayerView!
94-
private var observation: NSKeyValueObservation?
95-
96-
deinit {
97-
observation?.invalidate()
98-
}
99-
100-
override func viewDidAppear() {
101-
super.viewDidAppear()
102-
103-
let player = playerView.player
104-
observation = playerView.player?.currentItem?.observe(\.status) { (item, change) in
105-
if item.status == .readyToPlay {
106-
player?.play()
107-
}
108-
}
109-
}
110107
}

Examples/FileBrowser/FileBrowser.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)