@@ -2,21 +2,45 @@ open Wlroots
22
33type  view 
44
5- type  st  = {
5+ type  tinywl_output  = {
6+   output  : Output .t ; 
7+ 
8+   frame  : Wl.Listener .t ; 
9+ }
10+ 
11+ type  tinywl_server  = {
612  display  : Wl.Display .t ; 
713  backend  : Backend .t ; 
814  renderer  : Renderer .t ; 
9-   output_layout  : Output.Layout .t ; 
10-   mutable  outputs  : Output .t  list ; 
15+   output_layout  : Output_layout .t ; 
16+   mutable  outputs  : tinywl_output  list ; 
1117  mutable  views  : view  list ; 
1218  mutable  keyboards  : Keyboard .t  list ; 
1319
1420  new_output  : Wl.Listener .t ; 
1521}
1622
17- let  server_new_output  _st  _  _  = 
23+ let  output_frame  _st  _  _  = 
1824  failwith " todo" 
1925
26+ let  server_new_output  st  _  output  = 
27+   let  output_ok = 
28+     match  Output. preferred_mode output with 
29+     |  Some  mode  ->
30+       Output. set_mode output mode;
31+       Output. enable output true ;
32+       Output. commit output
33+     |  None  -> true 
34+   in 
35+   if  output_ok then  begin 
36+     let  o =  { output; frame =  Wl.Listener. create ()  } in 
37+     Wl.Signal. add (Output. signal_frame output) o.frame (output_frame st);
38+     st.outputs < -  o :: st.outputs;
39+ 
40+     Output_layout. add_auto st.output_layout output;
41+     Output. create_global output;
42+   end 
43+ 
2044let  server_new_xdg_surface  _st  _  _  = 
2145  failwith " todo" 
2246
@@ -60,7 +84,7 @@ let () =
6084  let  _compositor =  Compositor. create display renderer in 
6185  let  _data_manager =  Data_device.Manager. create display in 
6286
63-   let  output_layout =  Output.Layout . create ()  in 
87+   let  output_layout =  Output_layout . create ()  in 
6488
6589  let  xdg_shell =  Xdg_shell. create display in 
6690
0 commit comments