Site icon EfmSoft

What does HRESULT 0x88980800 (DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED) mean?

 
Previous Next
DWMERR_CATASTROPHIC_FAILURE DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED

DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED

What Windows rejected: window already composed

The useful interpretation of DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED (0x88980800) starts at the dcomp boundary: the application attempted to create a second composition target for a window already associated with one. In practical terms, inspect DirectComposition target ownership for an HWND before changing application-wide graphics settings.

DirectComposition batches changes until Commit, while surface drawing has its own BeginDraw/EndDraw lifetime. Treat those two transactions separately in traces and cleanup.

Build a useful diagnostic record

Capture itemWhy it matters
What to captureHWND, process and thread IDs, existing IDCompositionTarget lifetime, topmost flag and target creation stack
Current graph stateDirectComposition device, target, visual tree and surface update transaction
Supporting traceBeginDraw/EndDraw or target-creation sequence, Commit result, HWND ownership and CheckDeviceState output
Object identityDirectComposition target ownership for an HWND
Rejected conditionthe application attempted to create a second composition target for a window already associated with one

Separate state from capability

  1. Capture the failing state. Record HWND, process and thread IDs, existing IDCompositionTarget lifetime, topmost flag and target creation stack.
  2. Create one target successfully and issue a second CreateTargetForHwnd for the same window.

The comparison with DCOMPOSITION_ERROR_ACCESS_DENIED is especially useful: DCOMPOSITION_ERROR_ACCESS_DENIED is returned when the window belongs to another process.

Verify the repaired path

Keep one target owner per window and release or reuse it during visual-tree replacement.

  • debug-layer, ETW or driver diagnostics no longer report the rejected DirectComposition target ownership for an HWND contract during the same scenario.

Implementation notes

Log BeginDraw/EndDraw or target-creation sequence, Commit result, HWND ownership and CheckDeviceState output.

Technical references


Looking for a different code? Search another status or error code.

Exit mobile version