[Mesa-dev] [PATCH 6/7] st/nine: Flush the queue at device dtor
Axel Davy
axel.davy at ens.fr
Fri Jan 6 20:17:20 UTC 2017
Flush the queue to get refcounts right, and properly
release the items, instead of throwing away all pending
commands.
Signed-off-by: Axel Davy <axel.davy at ens.fr>
---
src/gallium/state_trackers/nine/device9.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c
index 03564203df..1a0ab035c7 100644
--- a/src/gallium/state_trackers/nine/device9.c
+++ b/src/gallium/state_trackers/nine/device9.c
@@ -537,8 +537,13 @@ NineDevice9_dtor( struct NineDevice9 *This )
DBG("This=%p\n", This);
- /* Do not call nine_csmt_process here. The device is dead! */
+ /* Flush all pending commands to get refcount right,
+ * and properly release bound objects. It is ok to still
+ * execute commands while we are in device dtor, because
+ * we haven't released anything yet. Note that no pending
+ * command can increase the device refcount. */
if (This->csmt_active && This->csmt_ctx) {
+ nine_csmt_process(This);
nine_csmt_destroy(This, This->csmt_ctx);
This->csmt_active = FALSE;
This->csmt_ctx = NULL;
--
2.11.0
More information about the mesa-dev
mailing list