Remove draw_handler on unregister

How can I delete a draw_handler on unregister?

I add one on register

handler = bpy.types.SpaceView3D.draw_handler_add(draw_something, (), 'WINDOW', 'POST_VIEW')

but where is this stored? How can I list this in any way… ?

because unregister this like this, doesn’t work.

bpy.types.SpaceView3D.draw_handler_remove(draw_something,'WINDOW')

I know how it works with app handlers, I can list them and check if they are existing… but with draw_handlers it seems to be different.

Use “del” (Google it)

it doesnt worj, because unregister doesnt know the handler var…

I found a workaround

on Register:

    dns = bpy.app.driver_namespace
    dns["draw_something"] = bpy.types.SpaceView3D.draw_handler_add(draw_something, (), 'WINDOW', 'POST_VIEW')

On Unregister:

    dns = bpy.app.driver_namespace   
    bpy.types.SpaceView3D.draw_handler_remove(dns["draw_something"],'WINDOW')

I will see if this is a longterm solution

:confused: No, it is not… on reregistering this makes problems… somehow…

No wait, it IS working…
I just needed to add del(dns[“draw_something”]) … hooray

Probably better way would be to store it as a module global variable that both register and unregister can access instead of using driver namespace for it.