diff --git a/lib/aethyr/core/connection/server.rb b/lib/aethyr/core/connection/server.rb index e0e24514080adabd42669725b49b2f524b5a307d..bb6db5390a9d53295073fe2c55614e908999390e 100644 --- a/lib/aethyr/core/connection/server.rb +++ b/lib/aethyr/core/connection/server.rb @@ -58,7 +58,6 @@ module Aethyr players = Set.new() loop do - did_something = false # handle the listener #ready, _, _ = IO.select([listener]) socket, addr_info = listener.accept_nonblock(exception: false) @@ -75,6 +74,18 @@ module Aethyr end end + # TODO this is a hack to fix a bug from calling resizeterm + #check if global refresh is needed + need_refresh = false + players.each do |player| + need_refresh = true if player.display.global_refresh + end + if need_refresh + players.each do |player| + player.display.layout + end + end + end clean_up_children diff --git a/lib/aethyr/core/render/display.rb b/lib/aethyr/core/render/display.rb index fe0e94440a347939cad9e046d2f93a1f6f713fb9..fdf1508e3aee33dedc9f1c9c014323761073b7c4 100644 --- a/lib/aethyr/core/render/display.rb +++ b/lib/aethyr/core/render/display.rb @@ -83,6 +83,7 @@ class Display end def layout(layout: @layout_type) + set_term puts "layout #{layout} set for resolution #{@width}x#{@height}" @layout_type = layout if @layout_type == :wide && @height >= 60 && @width >= 300 @@ -128,9 +129,16 @@ class Display @width = resolution[0] @height = resolution[1] Ncurses.resizeterm(@height, @width) + @global_refresh = true layout end + def global_refresh + retval = @global_refresh + @global_refresh = false + return retval + end + def echo? @echo end