I'd prefer having surface_created() and surface_destroyed() so they're more symmetrical. In that case you'd remove the surface from the container and destroy it after passing it to the listener. But it's not major and it depends on how you're consuming these events.
I'd prefer having surface_created() and surface_destroyed() so they're more symmetrical. In that case you'd remove the surface from the container and destroy it after passing it to the listener. But it's not major and it depends on how you're consuming these events.
Other than the missing file, this seems OK.