<div dir="ltr">Hey, I'm working on my own window manager and I'm having a hard time tracking through the Weston code to see where a function is registered as part of an interface. Right now I am looking at surfaces. I guess my question is more related to the relation of surface and shell surface. In the main compositor file, their is a struct called surface_interface which is passed into 'wl_resource_set_implementation' along with a resource 'wl_surface_interface'. Okay, that is clear enough, but now in shell.c their are a bunch of functions in the 'shell_surface_implementation' struct which again has a resource created and implemented for 'wl_shell_surface_interface'. Also in the module_init their is a global created to 'bind' the compositor to another struct for 'desktop' stuff. How do all of these things relate? Is surface similar to a base class and shell_surface similar to an inherited class?</div>