@@ -17,7 +17,7 @@ use anyrender_vello::VelloWindowRenderer as WindowRenderer;
1717use blitz_dom:: DocumentConfig ;
1818use blitz_html:: HtmlDocument ;
1919use blitz_shell:: {
20- BlitzApplication , BlitzShellEvent , Config , EventLoop , WindowConfig , create_default_event_loop,
20+ BlitzApplication , BlitzShellProxy , Config , EventLoop , WindowConfig , create_default_event_loop,
2121} ;
2222use blitz_traits:: net:: NetProvider ;
2323
@@ -55,8 +55,10 @@ pub fn launch_url(url: &str) {
5555 . unwrap ( ) ;
5656 let _guard = rt. enter ( ) ;
5757
58- let event_loop = create_default_event_loop :: < BlitzShellEvent > ( ) ;
59- let net_provider = create_net_provider ( & event_loop) ;
58+ let event_loop = create_default_event_loop ( ) ;
59+ let ( proxy, reciever) = BlitzShellProxy :: new ( event_loop. create_proxy ( ) ) ;
60+ let net_provider = create_net_provider ( proxy. clone ( ) ) ;
61+ let application = BlitzApplication :: new ( proxy, reciever) ;
6062
6163 let ( url, bytes) = rt
6264 . block_on ( net_provider. fetch_async ( blitz_traits:: net:: Request :: get ( url) ) )
@@ -70,6 +72,7 @@ pub fn launch_url(url: &str) {
7072 base_url : Some ( url) ,
7173 } ,
7274 event_loop,
75+ application,
7376 net_provider,
7477 )
7578}
@@ -88,16 +91,19 @@ pub fn launch_static_html_cfg(html: &str, cfg: Config) {
8891 #[ cfg( feature = "net" ) ]
8992 let _guard = rt. enter ( ) ;
9093
91- let event_loop = create_default_event_loop :: < BlitzShellEvent > ( ) ;
92- let net_provider = create_net_provider ( & event_loop) ;
94+ let event_loop = create_default_event_loop ( ) ;
95+ let ( proxy, reciever) = BlitzShellProxy :: new ( event_loop. create_proxy ( ) ) ;
96+ let net_provider = create_net_provider ( proxy. clone ( ) ) ;
97+ let application = BlitzApplication :: new ( proxy, reciever) ;
9398
94- launch_internal ( html, cfg, event_loop, net_provider)
99+ launch_internal ( html, cfg, event_loop, application , net_provider)
95100}
96101
97102fn launch_internal (
98103 html : & str ,
99104 cfg : Config ,
100- event_loop : EventLoop < BlitzShellEvent > ,
105+ event_loop : EventLoop ,
106+ mut application : BlitzApplication < WindowRenderer > ,
101107 net_provider : Arc < dyn NetProvider > ,
102108) {
103109 let doc = HtmlDocument :: from_html (
@@ -113,27 +119,21 @@ fn launch_internal(
113119 let window = WindowConfig :: new ( Box :: new ( doc) as _ , renderer) ;
114120
115121 // Create application
116- let mut application = BlitzApplication :: new ( event_loop . create_proxy ( ) ) ;
122+
117123 application. add_window ( window) ;
118124
119125 // Run event loop
120- event_loop. run_app ( & mut application) . unwrap ( )
126+ event_loop. run_app ( application) . unwrap ( )
121127}
122128
123129#[ cfg( feature = "net" ) ]
124130type EnabledNetProvider = blitz_net:: Provider ;
125131#[ cfg( not( feature = "net" ) ) ]
126132type EnabledNetProvider = blitz_traits:: net:: DummyNetProvider ;
127133
128- fn create_net_provider (
129- event_loop : & blitz_shell:: EventLoop < BlitzShellEvent > ,
130- ) -> Arc < EnabledNetProvider > {
134+ fn create_net_provider ( proxy : BlitzShellProxy ) -> Arc < EnabledNetProvider > {
131135 #[ cfg( feature = "net" ) ]
132- let net_provider = {
133- let proxy = event_loop. create_proxy ( ) ;
134- let waker = blitz_shell:: BlitzShellNetWaker :: shared ( proxy) ;
135- Arc :: new ( blitz_net:: Provider :: new ( Some ( waker) ) )
136- } ;
136+ let net_provider = Arc :: new ( blitz_net:: Provider :: new ( Some ( Arc :: new ( proxy) ) ) ) ;
137137 #[ cfg( not( feature = "net" ) ) ]
138138 let net_provider = {
139139 use blitz_traits:: net:: DummyNetProvider ;
0 commit comments