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
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:
- Self-contained coexistence — MIME
application/x-jihad-browser(AdapterGetMIMEDescription) + YAP server nameBrowserClientBase("jihad-browser"), so this plugin runs alongside the stockBrowserAdapter.sowithout collision. Paired withapp/source/JihadEngineOverride.jsandpackaging/. dstBufferraw-blithandlePaint— 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.- Single-tap → click —
npPalmGestureSingleTapEventdispatchesasyncCmdClickAtin 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.