This change forces the "surfaces" component to have to peek into the "input" component's internals to implement (surfaces::SurfaceState <- input::Surface). The server's components expose public (from the component's POV) interfaces in the include/ directory, which has served as well so far.
We now have the need for two levels of exposure:
1. Component public (i.e. needed by other components)
2. libmirserver public (which is a subset of component public)
I don't think that trying to use a single mechanism for both levels (in this case placing/removing headers from include/) serves us well. Perhaps the solution is to cherry-pick headers to install from the include/ directories.
This change forces the "surfaces" component to have to peek into the "input" component's internals to implement (surfaces: :SurfaceState <- input::Surface). The server's components expose public (from the component's POV) interfaces in the include/ directory, which has served as well so far.
We now have the need for two levels of exposure:
1. Component public (i.e. needed by other components)
2. libmirserver public (which is a subset of component public)
I don't think that trying to use a single mechanism for both levels (in this case placing/removing headers from include/) serves us well. Perhaps the solution is to cherry-pick headers to install from the include/ directories.
Needs Discussion