Hello,
as intermediate step to support the dynamic resizing of frame buffers, I have revisited the 'Framebuffer::Session' interface and thereby broke API compatibility.
The following changes are worth noting:
* The former 'Session::info' is no more. This function was a relict from the early days when we used to pass out parameters via pointers.
* The new 'mode' function returns a structured object of the type 'Framebuffer::Mode' that contains the mode information and pixel- format definitions.
* The new 'mode_sigh' function enables a client to register a signal handler at the framebuffer session. This signal handler gets notified in the event of server-side mode changes.
* Via the new 'release' function, the client is able to acknowledge a mode change. By calling it, the client tells the server that it no longer uses the original framebuffer dataspace. So the server can replace it by a new one. After having called 'release', the client can obtain the dataspace for the new mode by calling 'dataspace()' again.
For now, the primary motivation for this change is our desire to have resizable virtual framebuffers (i.e., adding a resizing capability to liquid fb). In the future, we envision the same mechanism to be used to dynamically change physical framebuffer modes as well.
For comments and technical disussion, please also refer to the relevant issue: https://github.com/genodelabs/genode/issues/11
Cheers Norman