Skip to content

Commit c56aae0

Browse files
committed
Update CI and MSRV
1 parent 6bc313e commit c56aae0

File tree

10 files changed

+256
-223
lines changed

10 files changed

+256
-223
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: Setup release env
2+
runs:
3+
using: "composite"
4+
steps:
5+
- name: Install Rust
6+
uses: dtolnay/rust-toolchain@stable
7+
8+
- name: Get the package versions
9+
shell: bash
10+
run: |
11+
RELEASE_PKG_VERSION=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[].version')
12+
13+
echo "RELEASE_PKG_VERSION=${RELEASE_PKG_VERSION}" >> $GITHUB_ENV
14+
echo "ARCHIVE_PREFIX=${{ env.RELEASE_BIN }}-${RELEASE_PKG_VERSION}" >> $GITHUB_ENV
15+
16+
- name: Create artifacts directory
17+
shell: bash
18+
run: |
19+
mkdir ${{ env.RELEASE_DIR }}

.github/workflows/artifacts.yml

Lines changed: 0 additions & 58 deletions
This file was deleted.

.github/workflows/ci.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ jobs:
1414
- uses: actions/checkout@v4
1515

1616
- name: Install dependencies
17-
run: sudo apt-get install -y libgtk-3-dev
17+
run: |
18+
sudo apt-get update
19+
sudo apt-get install -y libgtk-3-dev
1820
1921
- name: Install Rust, clippy and rustfmt
2022
uses: dtolnay/rust-toolchain@stable

.github/workflows/release.yml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
on:
2+
workflow_dispatch:
3+
4+
name: Artifacts
5+
6+
env:
7+
RELEASE_BIN: vspreview-rs
8+
RELEASE_DIR: artifacts
9+
BUILD_PROFILE: release-deploy
10+
WINDOWS_TARGET: x86_64-pc-windows-msvc
11+
WINDOWS_ARM_TARGET: aarch64-pc-windows-msvc
12+
13+
jobs:
14+
windows-binary:
15+
runs-on: windows-latest
16+
17+
steps:
18+
- uses: actions/checkout@v4
19+
- uses: ./.github/actions/setup-release-env
20+
21+
- name: Build
22+
run: |
23+
rustup target add ${{ env.WINDOWS_ARM_TARGET }}
24+
25+
cargo build --profile ${{ env.BUILD_PROFILE }}
26+
cargo build --profile ${{ env.BUILD_PROFILE }} --target ${{ env.WINDOWS_ARM_TARGET }}
27+
28+
- name: Create zipfile
29+
shell: bash
30+
run: |
31+
X86_64_ARCHIVE_FILE=${{ env.RELEASE_DIR }}/${{ env.ARCHIVE_PREFIX }}-${{ env.WINDOWS_TARGET }}.zip
32+
AARCH64_ARCHIVE_FILE=${{ env.RELEASE_DIR }}/${{ env.ARCHIVE_PREFIX }}-${{ env.WINDOWS_ARM_TARGET }}.zip
33+
34+
mv ./target/${{ env.BUILD_PROFILE }}/${{ env.RELEASE_BIN }}.exe ./${{ env.RELEASE_BIN }}.exe
35+
7z a ./${X86_64_ARCHIVE_FILE} ./${{ env.RELEASE_BIN }}.exe
36+
37+
mv ./target/${{ env.WINDOWS_ARM_TARGET }}/${{ env.BUILD_PROFILE }}/${{ env.RELEASE_BIN }}.exe ./${{ env.RELEASE_BIN }}.exe
38+
7z a ./${AARCH64_ARCHIVE_FILE} ./${{ env.RELEASE_BIN }}.exe
39+
40+
- name: Upload artifacts
41+
uses: actions/upload-artifact@v4
42+
with:
43+
name: Windows artifacts
44+
path: ./${{ env.RELEASE_DIR }}/*
45+
46+
create-release:
47+
needs: [windows-binary]
48+
runs-on: ubuntu-latest
49+
permissions:
50+
contents: write
51+
id-token: write
52+
attestations: write
53+
54+
steps:
55+
- name: Download artifacts
56+
uses: actions/download-artifact@v4
57+
58+
- name: Display structure of downloaded files
59+
run: ls -R
60+
61+
- name: Attest
62+
uses: actions/attest-build-provenance@v3
63+
with:
64+
subject-path: |
65+
Windows artifacts/*
66+
67+
- name: Create a draft release
68+
uses: softprops/action-gh-release@v2
69+
with:
70+
tag_name: ${{ env.RELEASE_PKG_VERSION }}
71+
draft: true
72+
files: |
73+
Windows artifacts/*

Cargo.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name = "vspreview-rs"
33
version = "1.0.1"
44
authors = ["quietvoid"]
55
edition = "2024"
6-
rust-version = "1.85.0"
6+
rust-version = "1.88.0"
77
license = "GPL-3.0"
88

99
[dependencies]
@@ -29,6 +29,7 @@ vapoursynth = { version = "0.5.0" }
2929
name = "vspreview-rs"
3030
path = "src/main.rs"
3131

32-
[profile.release]
33-
opt-level = 3
34-
strip = true
32+
[profile.release-deploy]
33+
inherits = "release"
34+
lto = "thin"
35+
strip = "symbols"

src/app/ui/message_window.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@ impl MessageWindowUi {
77
pub fn ui(pv: &mut VSPreviewer, ctx: &egui::Context) {
88
let mut vs_messages = None;
99

10-
if let Some(script_lock) = pv.script.try_lock() {
11-
if let Some(mut messages) = script_lock.vs_messages.try_lock() {
12-
if !messages.is_empty() {
13-
vs_messages = Some(messages.clone());
14-
messages.clear();
15-
}
16-
}
10+
if let Some(script_lock) = pv.script.try_lock()
11+
&& let Some(mut messages) = script_lock.vs_messages.try_lock()
12+
&& !messages.is_empty()
13+
{
14+
vs_messages = Some(messages.clone());
15+
messages.clear();
1716
}
1817

1918
if let Some(messages) = &vs_messages {

src/app/ui/preferences.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,11 @@ impl UiPreferences {
205205

206206
fn transforms_ui(pv: &mut VSPreviewer, ui: &mut egui::Ui, ctx: &egui::Context) {
207207
let mut profile_name = String::from("None");
208-
if let Some(t) = pv.transforms.try_lock() {
209-
if let Some(icc) = &t.icc {
210-
if let Some(name) = icc.icc_file.file_name() {
211-
profile_name = name.to_str().unwrap().to_string();
212-
}
213-
}
208+
if let Some(t) = pv.transforms.try_lock()
209+
&& let Some(icc) = &t.icc
210+
&& let Some(name) = icc.icc_file.file_name()
211+
{
212+
profile_name = name.to_str().unwrap().to_string();
214213
}
215214

216215
let max_name_size = profile_name.len().min(50);

src/app/ui/preview_image.rs

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -79,45 +79,45 @@ impl UiPreviewImage {
7979
ui.with_layout(canvas_layout, |ui| {
8080
if let Some(pf) = preview_frame {
8181
let pf = pf.read();
82-
if let Some(tex_mutex) = pf.texture.try_lock() {
83-
if let Some(tex) = &*tex_mutex {
84-
painted_image = true;
85-
86-
let mut tex_size = tex.size_vec2();
87-
88-
if (tex_size.x > win_size.x || tex_size.y > win_size.y)
89-
&& pv.state.fit_to_window
90-
{
91-
// Image larger than window, downscaling
92-
tex_size *= (win_size.x / tex_size.x).min(1.0);
93-
tex_size *= (win_size.y / tex_size.y).min(1.0);
94-
} else if (tex_size.x < win_size.x || tex_size.y < win_size.y)
95-
&& pv.state.upscale_to_window
96-
&& pv.state.upsampling_filter == PreviewFilterType::Gpu
97-
{
98-
let target_size =
99-
crate::utils::dimensions_for_window(&win_size, &tex_size);
100-
// Image smaller than window, upscale
101-
tex_size = target_size;
102-
}
103-
104-
let custom_image = CustomImage::new(tex.id(), tex_size);
105-
106-
ui.add(custom_image);
107-
108-
if !pv.any_input_focused() && !pv.frame_promise.is_locked() {
109-
let mut res = Self::handle_move_inputs(
110-
pv,
111-
ui,
112-
&image_size,
113-
zoom_delta,
114-
scroll_delta,
115-
);
116-
pv.add_error("preview", &res);
117-
118-
res = Self::handle_keypresses(pv, ui);
119-
pv.add_error("preview", &res);
120-
}
82+
if let Some(tex_mutex) = pf.texture.try_lock()
83+
&& let Some(tex) = &*tex_mutex
84+
{
85+
painted_image = true;
86+
87+
let mut tex_size = tex.size_vec2();
88+
89+
if (tex_size.x > win_size.x || tex_size.y > win_size.y)
90+
&& pv.state.fit_to_window
91+
{
92+
// Image larger than window, downscaling
93+
tex_size *= (win_size.x / tex_size.x).min(1.0);
94+
tex_size *= (win_size.y / tex_size.y).min(1.0);
95+
} else if (tex_size.x < win_size.x || tex_size.y < win_size.y)
96+
&& pv.state.upscale_to_window
97+
&& pv.state.upsampling_filter == PreviewFilterType::Gpu
98+
{
99+
let target_size =
100+
crate::utils::dimensions_for_window(&win_size, &tex_size);
101+
// Image smaller than window, upscale
102+
tex_size = target_size;
103+
}
104+
105+
let custom_image = CustomImage::new(tex.id(), tex_size);
106+
107+
ui.add(custom_image);
108+
109+
if !pv.any_input_focused() && !pv.frame_promise.is_locked() {
110+
let mut res = Self::handle_move_inputs(
111+
pv,
112+
ui,
113+
&image_size,
114+
zoom_delta,
115+
scroll_delta,
116+
);
117+
pv.add_error("preview", &res);
118+
119+
res = Self::handle_keypresses(pv, ui);
120+
pv.add_error("preview", &res);
121121
}
122122
};
123123
}

0 commit comments

Comments
 (0)