For Developers‎ > ‎Design Documents‎ > ‎

Printing

  • The printing is initiated by the yellow boxes; either by user intents or by script.
  • The actual printer spooling is done in the print worker thread.
  • The renderer thread is blocking the whole time, which could lead to deadlock where:
    • The renderer sends a sync message to the browser UI thread (which implicitly requires a round trip to the I/O thread)
    • The browser thread displays a PrintDlgEx() dialog box for instance
    • The tab client area (e.g. the HTML display area) receives a invalidation; requiring it to regenerate the display.
    • (or) A windowed plugin receives a WM_PAINT window message.
    • The windowed plugin calls NPAPI_ExecuteJavascript()
    • This calls synchronously the renderer.
    • But the renderer is not processing messages anymore -> Deadlock.

Because of this, there is work going on to not block the Renderer Thread by duplicating the WebViewImpl/WebFrameImpl and use the "inert" duplicate frame for the printing. This removes all the sync messages requirements.



Comments