def draw_screen opts={}
return if @shelled
status, title =
if opts.member? :status
[opts[:status], opts[:title]]
else
raise "status must be supplied if draw_screen is called within a sync" if opts[:sync] == false
get_status_and_title @focus_buf
end
print "\033]0;#{title}\07" if title && @in_x
Ncurses.mutex.lock unless opts[:sync] == false
false && @buffers.inject(@dirty) do |dirty, buf|
buf.resize Ncurses.rows - minibuf_lines, Ncurses.cols
buf.draw status
dirty
end
if true
buf = @buffers.last
buf.resize Ncurses.rows - minibuf_lines, Ncurses.cols
@dirty ? buf.draw(status) : buf.redraw(status)
end
draw_minibuf :sync => false unless opts[:skip_minibuf]
@dirty = false
Ncurses.doupdate
Ncurses.refresh if opts[:refresh]
Ncurses.mutex.unlock unless opts[:sync] == false
end