¿Qué significa el código HRESULT 0x88990016 (D2DERR_PUSH_POP_UNBALANCED)?

 
Anterior Siguiente
D2DERR_WRONG_RESOURCE_DOMAIN D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT

D2DERR_PUSH_POP_UNBALANCED

Qué significa D2DERR_PUSH_POP_UNBALANCED

D2DERR_PUSH_POP_UNBALANCED (-2003238890, 0x88990016) — El número de llamadas push y pop no está equilibrado.

Direct2D mantiene pilas lógicas de layers y clips. Push y Pop deben estar equilibrados dentro de la misma secuencia de dibujo y sobre el mismo render target; el error suele aparecer más tarde que la llamada que rompió el balance.

Qué demuestra este HRESULT

La condición específica es pila de layers/clips no queda equilibrada al terminar el dibujo. Instrumenta profundidad de stack al entrar/salir de cada rutina de dibujo y revisa early returns/exceptions. EndDraw debe ver la misma profundidad inicial; añadir Pops genéricos al final puede ocultar qué rama creó el desbalance.

Instrumenta la profundidad de la pila

Incrementa un contador en cada Push y decrementa en el Pop correspondiente, incluyendo excepciones y early returns. Guarda target y tipo de entrada en cada nivel; el primer cambio que rompe la profundidad esperada suele estar antes de la API que finalmente devuelve el HRESULT.

No confundir con un resultado cercano

D2DERR_POP_CALL_DID_NOT_MATCH_PUSH se aísla por Pop no corresponde al último Push de la pila Direct2D. Aquí debe demostrarse pila de layers/clips no queda equilibrada al terminar el dibujo; son fronteras distintas aunque ambas aparezcan en el mismo render loop.

Referencias técnicas


¿Buscas un código diferente? Buscar otro código de estado o error.