Skip to main content

Presentation Suppression

Capturing the frame is only half of renderer takeover. The original Skiko path must also be prevented from presenting over the Kanvas-owned surface at the wrong point.

That work lives in SkikoContextTransformer.java.

Why suppression exists​

Without suppression, both renderers can participate in one frame:

Kanvas presentation
│
▼
visible frame
│
Skiko presents afterward
│
▼
Kanvas output gets overwritten

The context transformer wraps Skiko's ContextHandler.draw(LayerDrawScope) path and asks the capture/takeover hooks whether that presentation pass should return immediately.

Why suppression is conditional​

The original path is still useful when takeover is disabled or when Kanvas is being used for capture/audit work only.

That is why the transformer asks a runtime hook instead of permanently deleting the method body.

Do not infer ownership from capture

It is possible to capture renderer activity without owning final presentation. "Capture worked" does not mean "Kanvas presented the frame." Renderer ownership must be confirmed independently.

Source: