Patch title: Release 95 bulk changes
Abstract:
File: /pliant/graphic/browser/client/context.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/language/stream.pli"
module "/pliant/util/pml/io.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/color/rgb888.pli"
module "/pliant/graphic/image/prototype.pli"
module "/pliant/graphic/layout/prototype.pli"
module "/pliant/graphic/layout/text1.pli"
module "/pliant/graphic/console/prototype.pli"



  type BrowserSession
    field Dictionary namespace
    # windows
    field Address console_address
    field List:BrowserWindow windows
    field Int position <- 4
    # control
    field Str url ; field Dictionary context
    field Link:Stream connection
    field (List Link:Stream) extra_connections
    field List:BrowserHistory history
    # focus
    field Pointer:BrowserWindow focus_window
    field Link:LayoutPrototype focus_target
    field Int focus_index
    field Str focus_value
    field Int focus_scroll_stage
    field Int focus_scroll_x focus_scroll_y
    field List:BrowserFocusHistory focus_history
    field Pointer:BrowserWindow over_window
    field Link:LayoutPrototype over_target
    # shortcuts
    field (Dictionary Str Link:LayoutPrototype) keys
    # styling
    field Int border_size <- 1
module "/pliant/language/compiler.pli"
module "/pliant/language/stream.pli"
module "/pliant/util/pml/io.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/color/rgb888.pli"
module "/pliant/graphic/image/prototype.pli"
module "/pliant/graphic/layout/prototype.pli"
module "/pliant/graphic/layout/text1.pli"
module "/pliant/graphic/console/prototype.pli"



  type BrowserSession
    field Dictionary namespace
    # windows
    field Address console_address
    field List:BrowserWindow windows
    field Int position <- 4
    # control
    field Str url ; field Dictionary context
    field Link:Stream connection
    field (List Link:Stream) extra_connections
    field List:BrowserHistory history
    # focus
    field Pointer:BrowserWindow focus_window
    field Link:LayoutPrototype focus_target
    field Int focus_index
    field Str focus_value
    field Int focus_scroll_stage
    field Int focus_scroll_x focus_scroll_y
    field List:BrowserFocusHistory focus_history
    field Pointer:BrowserWindow over_window
    field Link:LayoutPrototype over_target
    # shortcuts
    field (Dictionary Str Link:LayoutPrototype) keys
    # styling
    field Int border_size <- 1
    field LayoutColor border_color <- (color rgb 192 192 192
    field LayoutColor border_color <- (color rgb 192 192 192)
    field LayoutColor border_active_color <- (color rgb 128 128 128)


  type BrowserConsole
    field Link:ConsolePrototype console
    field (Array BrowserSession 12) session
    field Array:Int zorder
    field Int size_x size_y # screen or OS window size
    field Float unit_x unit_y # pixel size is mm
    field Float middle_x middle_y <- 0.5
    field Link:ColorGamut gamut
    field CBool brefresh <- true
    field List:BrowserSpace spaces
    field Sem sem
    field Int hurry_count <- 0
    field CBool cancelable <- false
    field DateTime last_full_cycle
    field Float force_after <- 15 # seconds
    field Link:LayoutStyle default_style
    field Dictionary fonts
    field Str font_server
    field Link:Stream font_stream
    field (Dictionary Str BrowserLogin) login
    field Str clipboard_text
    field Link:LayoutPrototype clipboard_target
    field Int clipboard_index <- undefined


  type BrowserConsole
    field Link:ConsolePrototype console
    field (Array BrowserSession 12) session
    field Array:Int zorder
    field Int size_x size_y # screen or OS window size
    field Float unit_x unit_y # pixel size is mm
    field Float middle_x middle_y <- 0.5
    field Link:ColorGamut gamut
    field CBool brefresh <- true
    field List:BrowserSpace spaces
    field Sem sem
    field Int hurry_count <- 0
    field CBool cancelable <- false
    field DateTime last_full_cycle
    field Float force_after <- 15 # seconds
    field Link:LayoutStyle default_style
    field Dictionary fonts
    field Str font_server
    field Link:Stream font_stream
    field (Dictionary Str BrowserLogin) login
    field Str clipboard_text
    field Link:LayoutPrototype clipboard_target
    field Int clipboard_index <- undefined
    field CBool lazy_display_mark <- false


method c process_instruction lock
  arg_rw BrowserClientContext c ; arg CBool lock
  if not (c:connection ipick open (var Ident instruction))
    if trace and not c:extra_thread
      console "broken connection" eol
    c:connection error "corrupted connection"
    return
  var Pointer:Arrow pfun :> browser_client_instructions firs
  if pfun=null
    if trace
      console "unsupported instruction '" (cast instruction 
    c:connection error "unsupported instruction '"+(cast ins
    return
  if trace2
    console "process instruction " (cast instruction Str) eo
  if lock
    c:session:console request_sem
  # console "begin " (cast instruction Str) eol
  browser_client_instruction_prototype c (pfun map Function)
  # console "end " (cast instruction Str) eol
  if lock


method c process_instruction lock
  arg_rw BrowserClientContext c ; arg CBool lock
  if not (c:connection ipick open (var Ident instruction))
    if trace and not c:extra_thread
      console "broken connection" eol
    c:connection error "corrupted connection"
    return
  var Pointer:Arrow pfun :> browser_client_instructions firs
  if pfun=null
    if trace
      console "unsupported instruction '" (cast instruction 
    c:connection error "unsupported instruction '"+(cast ins
    return
  if trace2
    console "process instruction " (cast instruction Str) eo
  if lock
    c:session:console request_sem
  # console "begin " (cast instruction Str) eol
  browser_client_instruction_prototype c (pfun map Function)
  # console "end " (cast instruction Str) eol
  if lock
    var Pointer:BrowserConsole bc :> c:session console
    thread
      bc lazy_display real_lazy_display_function
      bc:sem release
    if c:eos
      c:session:console:sem release
    else
      var Pointer:BrowserConsole bc :> c:session console
      thread
        bc lazy_display real_lazy_display_function
        bc:sem release
  if trace and c:connection=failure
    console "corrupted instruction '" (cast instruction Str)



export real_lazy_display_function
  if trace and c:connection=failure
    console "corrupted instruction '" (cast instruction Str)



export real_lazy_display_function