Skip to content

Commit

Permalink
Merge branch 'RustAudio:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
anvlkv authored Feb 9, 2024
2 parents c109aee + bbb58ab commit f7d7527
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 133 deletions.
171 changes: 52 additions & 119 deletions .github/workflows/cpal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,163 +7,114 @@ jobs:
clippy-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Update apt
run: sudo apt update
- name: Install alsa
run: sudo apt-get install libasound2-dev
- name: Install libjack
run: sudo apt-get install libjack-jackd2-dev libjack-jackd2-0
- name: Install stable
uses: actions-rs/toolchain@v1
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
override: true
components: clippy
target: armv7-linux-androideabi
- name: Run clippy
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all --all-features
run: cargo clippy --all --all-features
- name: Run clippy for Android target
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all --features asio --features oboe/fetch-prebuilt --target armv7-linux-androideabi
run: cargo clippy --all --features asio --features oboe/fetch-prebuilt --target armv7-linux-androideabi

rustfmt-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Install stable
uses: actions-rs/toolchain@v1
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
override: true
components: rustfmt
- name: Run rustfmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
run: cargo fmt --all -- --check

cargo-publish:
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
uses: dtolnay/rust-toolchain@stable
- name: Update apt
run: sudo apt update
- name: Install alsa
run: sudo apt-get install libasound2-dev
- name: Verify publish crate
uses: katyo/publish-crates@v1
uses: katyo/publish-crates@v2
with:
dry-run: true
ignore-unpublished-changes: true
- name: Publish crate
uses: katyo/publish-crates@v1
uses: katyo/publish-crates@v2
with:
ignore-unpublished-changes: true
registry-token: ${{ secrets.CRATESIO_TOKEN }}

ubuntu-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Update apt
run: sudo apt update
- name: Install alsa
run: sudo apt-get install libasound2-dev
- name: Install libjack
run: sudo apt-get install libjack-jackd2-dev libjack-jackd2-0
- name: Install stable
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
uses: dtolnay/rust-toolchain@stable
- name: Run without features
uses: actions-rs/cargo@v1
with:
command: test
args: --all --no-default-features --verbose
run: cargo test --all --no-default-features --verbose
- name: Run all features
uses: actions-rs/cargo@v1
with:
command: test
args: --all --all-features --verbose
run: cargo test --all --all-features --verbose

linux-check-and-test-armv7:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Install stable toolchain
uses: actions-rs/toolchain@v1
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
target: armv7-unknown-linux-gnueabihf
override: true

- name: Build image
run: docker build -t cross/cpal_armv7:v1 ./

- name: Install cross
run: cargo install cross

- name: Check without features for armv7
uses: actions-rs/cargo@v1
with:
command: check
use-cross: true
args: --target armv7-unknown-linux-gnueabihf --workspace --no-default-features --verbose
run: cross check --target armv7-unknown-linux-gnueabihf --workspace --no-default-features --verbose

- name: Test without features for armv7
uses: actions-rs/cargo@v1
with:
command: test
use-cross: true
args: --target armv7-unknown-linux-gnueabihf --workspace --no-default-features --verbose
run: cross test --target armv7-unknown-linux-gnueabihf --workspace --no-default-features --verbose

- name: Check all features for armv7
uses: actions-rs/cargo@v1
with:
command: check
use-cross: true
args: --target armv7-unknown-linux-gnueabihf --workspace --all-features --verbose
run: cross check --target armv7-unknown-linux-gnueabihf --workspace --all-features --verbose

- name: Test all features for armv7
uses: actions-rs/cargo@v1
with:
command: test
use-cross: true
args: --target armv7-unknown-linux-gnueabihf --workspace --all-features --verbose
run: cross test --target armv7-unknown-linux-gnueabihf --workspace --all-features --verbose

asmjs-wasm32-test:
strategy:
matrix:
target: [asmjs-unknown-emscripten, wasm32-unknown-emscripten]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Setup Emscripten toolchain
uses: mymindstorm/setup-emsdk@v10
with:
version: 2.0.9 # https://github.com/rust-lang/rust/issues/85821
uses: mymindstorm/setup-emsdk@v14
- name: Install stable
uses: actions-rs/toolchain@v1
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
target: ${{ matrix.target }}
- name: Build beep example
run: cargo build --example beep --release --target ${{ matrix.target }}
Expand All @@ -177,12 +128,10 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
- name: Install stable
uses: actions-rs/toolchain@v1
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
target: ${{ matrix.target }}
- name: Build beep example
run: cargo build --example beep --target ${{ matrix.target }} --features=wasm-bindgen
Expand All @@ -196,12 +145,10 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
- name: Install stable
uses: actions-rs/toolchain@v1
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
target: ${{ matrix.target }}
- name: Build beep example
run: cargo build --example beep --target ${{ matrix.target }}
Expand All @@ -212,7 +159,7 @@ jobs:
version: [x86_64, i686]
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Install ASIO SDK
env:
LINK: https://www.steinberg.net/asiosdk
Expand All @@ -225,12 +172,9 @@ jobs:
- name: Install llvm and clang
run: choco install llvm
- name: Install stable
uses: actions-rs/toolchain@v1
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
target: ${{ matrix.version }}-pc-windows-msvc
override: true
- name: Run without features
run: cargo test --all --no-default-features --verbose
- name: Run all features
Expand All @@ -241,15 +185,11 @@ jobs:
macos-test:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Install llvm and clang
run: brew install llvm
- name: Install stable
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
uses: dtolnay/rust-toolchain@stable
- name: Build beep example
run: cargo build --example beep
- name: Run without features
Expand All @@ -260,13 +200,10 @@ jobs:
android-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install stable
uses: actions-rs/toolchain@v1
- uses: actions/checkout@v4
- name: Install stable (Android target)
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
override: true
target: armv7-linux-androideabi
- name: Check android
run: cargo check --example android --target armv7-linux-androideabi --features oboe/fetch-prebuilt --verbose
Expand All @@ -282,13 +219,11 @@ jobs:
android-apk-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Android targets
run: |
rustup target add armv7-linux-androideabi
rustup target add aarch64-linux-android
rustup target add i686-linux-android
rustup target add x86_64-linux-android
- uses: actions/checkout@v4
- name: Install stable (Android targets)
uses: dtolnay/rust-toolchain@stable
with:
targets: armv7-linux-androideabi,aarch64-linux-android,i686-linux-android,x86_64-linux-android
- name: Set Up Android tools
run: |
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "platforms;android-30"
Expand All @@ -300,17 +235,13 @@ jobs:
ios-build:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Install llvm and clang
run: brew install llvm
- name: Install stable
uses: actions-rs/toolchain@v1
- name: Install stable (iOS targets)
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
override: true
- name: Add iOS targets
run: rustup target add aarch64-apple-ios x86_64-apple-ios
targets: aarch64-apple-ios,x86_64-apple-ios
- name: Install cargo lipo
run: cargo install cargo-lipo
- name: Build iphonesimulator feedback example
Expand All @@ -323,9 +254,11 @@ jobs:
# It does not test the javascript/web integration
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Target
run: rustup target add wasm32-unknown-unknown
- uses: actions/checkout@v4
- name: Install stable (wasm32 target)
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- name: Cargo Build
working-directory: ./examples/wasm-beep
run: cargo build --target wasm32-unknown-unknown
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ coreaudio-rs = { version = "0.11", default-features = false, features = [
] }

[target.'cfg(target_os = "emscripten")'.dependencies]
wasm-bindgen = { version = "0.2.58" }
wasm-bindgen = { version = "0.2.89" }
wasm-bindgen-futures = "0.4.33"
js-sys = { version = "0.3.35" }
web-sys = { version = "0.3.35", features = [
Expand Down
7 changes: 4 additions & 3 deletions src/host/alsa/enumerate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use super::alsa;
use super::parking_lot::Mutex;
use super::{Device, DeviceHandles};
use crate::{BackendSpecificError, DevicesError};
use std::sync::Arc;

/// ALSA's implementation for `Devices`.
pub struct Devices {
Expand Down Expand Up @@ -37,7 +38,7 @@ impl Iterator for Devices {
if let Ok(handles) = DeviceHandles::open(&name) {
return Some(Device {
name,
handles: Mutex::new(handles),
handles: Arc::new(Mutex::new(handles)),
});
}
}
Expand All @@ -50,15 +51,15 @@ impl Iterator for Devices {
pub fn default_input_device() -> Option<Device> {
Some(Device {
name: "default".to_owned(),
handles: Mutex::new(Default::default()),
handles: Arc::new(Mutex::new(Default::default())),
})
}

#[inline]
pub fn default_output_device() -> Option<Device> {
Some(Device {
name: "default".to_owned(),
handles: Mutex::new(Default::default()),
handles: Arc::new(Mutex::new(Default::default())),
})
}

Expand Down
3 changes: 2 additions & 1 deletion src/host/alsa/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -236,9 +236,10 @@ impl DeviceHandles {
}
}

#[derive(Clone)]
pub struct Device {
name: String,
handles: Mutex<DeviceHandles>,
handles: Arc<Mutex<DeviceHandles>>,
}

impl Device {
Expand Down
1 change: 1 addition & 0 deletions src/host/asio/device.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ use std::hash::{Hash, Hasher};
use std::sync::Arc;

/// A ASIO Device
#[derive(Clone)]
pub struct Device {
/// The driver represented by this device.
pub driver: Arc<sys::Driver>,
Expand Down
Loading

0 comments on commit f7d7527

Please sign in to comment.