Files
NotAlexNoyleandClaude Opus 5.5 554ed514dc T-505: the cause proven, the card measured; the card's frame wrapped without alpha
The owner's sequence: a Codex adversarial review (context/impl/impl-review-findings-t505-codex.md), then
"prove the cause first": JIHAD_GPU_NO_PUBLISH=1 (a diagnostic: frames made and read, never handed to the
card) shows the same daemon work making desktop Wikipedia 32 fps and the long page 53 while LunaSysMgr draws
nothing, 8.6 / 13.6 while the card moves: the card's redraw on the shared GPU and memory makes every daemon
stage ~3x slower. Then the card's paint measured (the adapter's [paint-stat] lines under its paint log): a
~10 ms software blit (Piranha's PSoftContext2D) of the whole view ~20 times a second, mostly repaints; a
PGSurface kept per frame changed nothing (not kept). The frame is now wrapped without alpha (every path
writes alpha 255): the blit 9 -> 5 ms, LunaSysMgr's card instance -15 % CPU while panning, the picture the
same; <state>/alphawrap reverts. The pan rate is unchanged; the owner's plan is the CPU/GPU split next.
tools/host/express-jobs.py also reads scripted pans.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XtfxSpM1w2uiVKeLKoV3g3
2026-10-26 11:52:33 -04:00
..

render/adapter — NPAPI BrowserAdapter (Goanna + self-contained)

The sysmgr-card NPAPI plugin: the isis UI's WebView loads it, and it speaks YAP to the render daemon and blits the daemon's shared-memory framebuffer onto the card. Built as BrowserAdapterJihad.so by build/webos-oe/build-adapter-{pdk,arm}.sh.

Origin & license (Apache-2.0)

Imported from the isis-project sources (Apache-2.0, © 2012 Hewlett-Packard Development Company, L.P. / © 2012-2014 LG Electronics, Inc.), with each file's @@@LICENSE header preserved:

  • BrowserAdapter.*, BrowserAdapterManager.*, BrowserClientBase.*, Rectangle.*, UrlInfo.*, InteractiveInfo.*, ElementInfo.*, ImageInfo.*, JsonNPObject.*, NPObjectEvent.*, KineticScroller.*, BrowserOffscreen.*, Browser{CenteredZoom,MetaViewport,ScrollableLayer}.h, Debug.h, BrowserAdapter.exports — from isis-project/BrowserAdapter @ 245f9c0.
  • AdapterBase.* — from isis-project/AdapterBase.

Not imported: the upstream data/ bitmaps (unused by the raw-blit paint path), debian/ packaging, and isis Makefiles (the build uses build/webos-oe/*.sh). The YAP transport (Yap/, IpcBuffer) lives in ../browserserver and is shared.

Jihad modifications (all in BrowserAdapter.cpp)

Per Apache-2.0 §4(b), the modified file carries an in-file change notice. Summary:

  1. Self-contained coexistence — MIME application/x-jihad-browser (AdapterGetMIMEDescription) + YAP server name BrowserClientBase("jihad-browser"), so this plugin runs alongside the stock BrowserAdapter.so without collision. Paired with app/source/JihadEngineOverride.js and packaging/.
  2. dstBuffer raw-blit handlePaint — replaces the QPainter/PGContext path (which segfaults the device's LunaCE WebKit1) with a raw ARGB blit into the WebKit paint buffer; plus a landscape rotation guard, pinch-zoom scaled blit, and scroll indicator.
  3. Single-tap → click — npPalmGestureSingleTapEvent dispatches asyncCmdClickAt in content coords so taps activate links/buttons/fields.

Items 2–3 are ported from the Atlas Browser project (Herman van Hazendonk / Herrie82, Apache-2.0; commits 7b91ab8, aefab6d, dbc897c, 27b54a5, 77ab724, 01da087), attributed in-code and in the repo NOTICE.