¿Qué significa el código HRESULT 0x88990014 (D2DERR_POP_CALL_DID_NOT_MATCH_PUSH)?

 
Anterior Siguiente
D2DERR_LAYER_ALREADY_IN_USE D2DERR_WRONG_RESOURCE_DOMAIN

D2DERR_POP_CALL_DID_NOT_MATCH_PUSH

Qué significa D2DERR_POP_CALL_DID_NOT_MATCH_PUSH

D2DERR_POP_CALL_DID_NOT_MATCH_PUSH (-2003238892, 0x88990014) — La llamada pop no coincide con su llamada push asociada.

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 Pop no corresponde al último Push de la pila Direct2D. Registra cada PushAxisAlignedClip/PushLayer con un stack ID y cada Pop. Reproduce hasta el primer desbalance y corrige esa rama de control; el lugar donde falla Pop suele ser posterior al error lógico.

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_PUSH_POP_UNBALANCED se aísla por pila de layers/clips no queda equilibrada al terminar el dibujo. Aquí debe demostrarse Pop no corresponde al último Push de la pila Direct2D; 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.