Skip to content

Commit e673641

Browse files
Move node graph execution result handling to app
1 parent 2b4cdaf commit e673641

File tree

4 files changed

+19
-20
lines changed

4 files changed

+19
-20
lines changed

desktop/src/app.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::CustomEvent;
22
use crate::WindowSize;
33
use crate::consts::APP_NAME;
44
use crate::desktop_wrapper::DesktopWrapper;
5+
use crate::desktop_wrapper::NodeGraphExecutionResult;
56
use crate::desktop_wrapper::WgpuContext;
67
use crate::desktop_wrapper::messages::DesktopFrontendMessage;
78
use crate::desktop_wrapper::messages::DesktopWrapperMessage;
@@ -110,11 +111,6 @@ impl WinitApp {
110111
}
111112
});
112113
}
113-
DesktopFrontendMessage::UpdateViewport(texture) => {
114-
if let Some(graphics_state) = &mut self.graphics_state {
115-
graphics_state.bind_viewport_texture(texture);
116-
}
117-
}
118114
DesktopFrontendMessage::UpdateViewportBounds { x, y, width, height } => {
119115
if let Some(graphics_state) = &mut self.graphics_state
120116
&& let Some(window) = &self.window
@@ -206,7 +202,19 @@ impl ApplicationHandler<CustomEvent> for WinitApp {
206202
fn user_event(&mut self, _: &ActiveEventLoop, event: CustomEvent) {
207203
match event {
208204
CustomEvent::DesktopWrapperMessage(message) => self.dispatch_desktop_wrapper_message(message),
209-
CustomEvent::DesktopFrontendMessage(message) => self.handle_desktop_frontend_message(message),
205+
CustomEvent::NodeGraphExecutionResult(result) => match result {
206+
NodeGraphExecutionResult::HasRun(texture) => {
207+
self.dispatch_desktop_wrapper_message(DesktopWrapperMessage::PollNodeGraphEvaluation);
208+
if let Some(texture) = texture
209+
&& let Some(graphics_state) = self.graphics_state.as_mut()
210+
&& let Some(window) = self.window.as_ref()
211+
{
212+
graphics_state.bind_viewport_texture(texture);
213+
window.request_redraw();
214+
}
215+
}
216+
NodeGraphExecutionResult::NotRun => {}
217+
},
210218
CustomEvent::UiUpdate(texture) => {
211219
if let Some(graphics_state) = self.graphics_state.as_mut() {
212220
graphics_state.resize(texture.width(), texture.height());

desktop/src/desktop_wrapper.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ impl DesktopWrapper {
3333
executor.execute()
3434
}
3535

36-
pub async fn run_node_graph() -> NodeGraphExecutionResult {
36+
pub async fn execute_node_graph() -> NodeGraphExecutionResult {
3737
let result = graphite_editor::node_graph_executor::run_node_graph().await;
3838
match result {
3939
(true, texture) => NodeGraphExecutionResult::HasRun(texture.map(|t| t.texture)),

desktop/src/desktop_wrapper/messages.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ pub enum DesktopFrontendMessage {
2121
content: Vec<u8>,
2222
},
2323
OpenUrl(String),
24-
UpdateViewport(wgpu::Texture),
2524
UpdateViewportBounds {
2625
x: f32,
2726
y: f32,

desktop/src/main.rs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ use app::WinitApp;
1616
mod dirs;
1717

1818
mod desktop_wrapper;
19-
use desktop_wrapper::messages::{DesktopFrontendMessage, DesktopWrapperMessage};
19+
use desktop_wrapper::messages::DesktopWrapperMessage;
2020
use desktop_wrapper::{DesktopWrapper, NodeGraphExecutionResult};
2121

2222
#[allow(clippy::large_enum_variant)]
2323
pub(crate) enum CustomEvent {
2424
UiUpdate(wgpu::Texture),
2525
ScheduleBrowserWork(Instant),
2626
DesktopWrapperMessage(DesktopWrapperMessage),
27-
DesktopFrontendMessage(DesktopFrontendMessage),
27+
NodeGraphExecutionResult(NodeGraphExecutionResult),
2828
}
2929

3030
fn main() {
@@ -64,16 +64,8 @@ fn main() {
6464
loop {
6565
let last_render = Instant::now();
6666

67-
let result = futures::executor::block_on(DesktopWrapper::run_node_graph());
68-
match result {
69-
NodeGraphExecutionResult::HasRun(texture) => {
70-
let _ = rendering_loop_proxy.send_event(CustomEvent::DesktopWrapperMessage(DesktopWrapperMessage::PollNodeGraphEvaluation));
71-
if let Some(texture) = texture {
72-
let _ = rendering_loop_proxy.send_event(CustomEvent::DesktopFrontendMessage(DesktopFrontendMessage::UpdateViewport(texture)));
73-
}
74-
}
75-
NodeGraphExecutionResult::NotRun => {}
76-
}
67+
let result = futures::executor::block_on(DesktopWrapper::execute_node_graph());
68+
let _ = rendering_loop_proxy.send_event(CustomEvent::NodeGraphExecutionResult(result));
7769

7870
let frame_time = Duration::from_secs_f32((target_fps as f32).recip());
7971
let sleep = last_render + frame_time - Instant::now();

0 commit comments

Comments
 (0)