mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-19 05:37:54 +00:00
nitpicker: let 'Connection' track donated quota
This patch adds support for the consecutive re-dimensioning the virtual framebuffer. When changing the buffer size, the session gets upgraded by the missing portion of the quota instead of donating the whole size of the new buffer each time.
This commit is contained in:
parent
b5b1dd03bd
commit
6b42f8b54e
@ -30,6 +30,7 @@ class Nitpicker::Connection : public Genode::Connection<Session>,
|
||||
|
||||
Framebuffer::Session_client _framebuffer;
|
||||
Input::Session_client _input;
|
||||
Genode::size_t _session_quota = 0;
|
||||
|
||||
/**
|
||||
* Create session and return typed session capability
|
||||
@ -75,10 +76,19 @@ class Nitpicker::Connection : public Genode::Connection<Session>,
|
||||
char argbuf[ARGBUF_SIZE];
|
||||
argbuf[0] = 0;
|
||||
|
||||
Genode::Arg_string::set_arg(argbuf, sizeof(argbuf), "ram_quota",
|
||||
ram_quota(mode, use_alpha));
|
||||
Genode::size_t const needed = ram_quota(mode, use_alpha);
|
||||
Genode::size_t const upgrade = needed > _session_quota
|
||||
? needed - _session_quota
|
||||
: 0;
|
||||
|
||||
if (upgrade > 0) {
|
||||
Genode::Arg_string::set_arg(argbuf, sizeof(argbuf), "ram_quota",
|
||||
upgrade);
|
||||
|
||||
Genode::env()->parent()->upgrade(cap(), argbuf);
|
||||
_session_quota += upgrade;
|
||||
}
|
||||
|
||||
Genode::env()->parent()->upgrade(cap(), argbuf);
|
||||
Session_client::buffer(mode, use_alpha);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user