force rerender after rsx is updated
This commit is contained in:
1 parent
031640c9a4
commit
586e29d815
2 files changed
+17
-2
No files matched your search
@@ -96,6 +96,7 @@ impl DesktopController {
|
|||||||
RSX_CONTEXT.set_error_handler(DesktopErrorHandler {
|
RSX_CONTEXT.set_error_handler(DesktopErrorHandler {
|
||||||
latest_connection: latest_out_connection_handle,
|
latest_connection: latest_out_connection_handle,
|
||||||
});
|
});
|
||||||
|
RSX_CONTEXT.provide_scheduler_channel(dom.get_scheduler_channel());
|
||||||
|
|
||||||
// connect to processes for incoming data
|
// connect to processes for incoming data
|
||||||
std::thread::spawn(move || {
|
std::thread::spawn(move || {
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
use captuered_context::CapturedContext;
|
use captuered_context::CapturedContext;
|
||||||
use dioxus_core::{Component, Element, LazyNodes, NodeFactory, Scope, ScopeState, VNode};
|
use dioxus_core::{
|
||||||
|
Component, Element, LazyNodes, NodeFactory, SchedulerMsg, Scope, ScopeId, ScopeState, VNode,
|
||||||
|
};
|
||||||
|
use dioxus_hooks::UnboundedSender;
|
||||||
use error::Error;
|
use error::Error;
|
||||||
use interperter::build;
|
use interperter::build;
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
@@ -87,6 +90,7 @@ pub struct RsxContext {
|
|||||||
pub struct RsxData {
|
pub struct RsxData {
|
||||||
pub hm: HashMap<CodeLocation, String>,
|
pub hm: HashMap<CodeLocation, String>,
|
||||||
pub error_handler: Option<Box<dyn ErrorHandler>>,
|
pub error_handler: Option<Box<dyn ErrorHandler>>,
|
||||||
|
pub scheduler_channel: Option<UnboundedSender<SchedulerMsg>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::fmt::Debug for RsxData {
|
impl std::fmt::Debug for RsxData {
|
||||||
@@ -103,7 +107,13 @@ impl RsxContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn insert(&self, loc: CodeLocation, text: String) {
|
pub fn insert(&self, loc: CodeLocation, text: String) {
|
||||||
self.data.write().unwrap().hm.insert(loc, text);
|
let mut write = self.data.write().unwrap();
|
||||||
|
write.hm.insert(loc, text);
|
||||||
|
if let Some(channel) = &mut write.scheduler_channel {
|
||||||
|
channel
|
||||||
|
.unbounded_send(SchedulerMsg::Immediate(ScopeId(0)))
|
||||||
|
.unwrap()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn read(&self) -> RwLockReadGuard<RsxData> {
|
pub fn read(&self) -> RwLockReadGuard<RsxData> {
|
||||||
@@ -119,6 +129,10 @@ impl RsxContext {
|
|||||||
pub fn set_error_handler(&self, handler: impl ErrorHandler + 'static) {
|
pub fn set_error_handler(&self, handler: impl ErrorHandler + 'static) {
|
||||||
self.data.write().unwrap().error_handler = Some(Box::new(handler));
|
self.data.write().unwrap().error_handler = Some(Box::new(handler));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn provide_scheduler_channel(&self, channel: UnboundedSender<SchedulerMsg>) {
|
||||||
|
self.data.write().unwrap().scheduler_channel = Some(channel)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait ErrorHandler: Send + Sync {
|
pub trait ErrorHandler: Send + Sync {
|
||||||
|
|||||||
Reference in new issue
Block a user