Skip to content

Commit

Permalink
Fix: add both the rAF queue and vecdequeue
Browse files Browse the repository at this point in the history
  • Loading branch information
jkelleyrtp committed Apr 4, 2024
1 parent 633e2a7 commit a6a6732
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 8 deletions.
8 changes: 4 additions & 4 deletions packages/desktop/src/edits.rs
@@ -1,17 +1,17 @@
use std::{cell::RefCell, rc::Rc};
use std::{cell::RefCell, collections::VecDeque, rc::Rc};

/// This handles communication between the requests that the webview makes and the interpreter. The interpreter constantly makes long running requests to the webview to get any edits that should be made to the DOM almost like server side events.
/// It will hold onto the requests until the interpreter is ready to handle them and hold onto any pending edits until a new request is made.
#[derive(Default, Clone)]
pub(crate) struct EditQueue {
queue: Rc<RefCell<Vec<Vec<u8>>>>,
queue: Rc<RefCell<VecDeque<Vec<u8>>>>,
responder: Rc<RefCell<Option<wry::RequestAsyncResponder>>>,
}

impl EditQueue {
pub fn handle_request(&self, responder: wry::RequestAsyncResponder) {
let mut queue = self.queue.borrow_mut();
if let Some(bytes) = queue.pop() {
if let Some(bytes) = queue.pop_back() {
responder.respond(wry::http::Response::new(bytes));
} else {
*self.responder.borrow_mut() = Some(responder);
Expand All @@ -23,7 +23,7 @@ impl EditQueue {
if let Some(responder) = responder.take() {
responder.respond(wry::http::Response::new(edits));
} else {
self.queue.borrow_mut().push(edits);
self.queue.borrow_mut().push_front(edits);
}
}
}
2 changes: 1 addition & 1 deletion packages/interpreter/src/js/hash.txt
@@ -1 +1 @@
13636418089
14148301494
2 changes: 1 addition & 1 deletion packages/interpreter/src/js/native.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit a6a6732

Please sign in to comment.