mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2026-03-17 05:34:23 -04:00
connection: Convert 0 to an actual buffer size limit sooner
This avoids special cases in get_max_size_bits_for_size() and ring_buffer_get_bits_for_size(). Signed-off-by: Demi Marie Obenour <demi@invisiblethingslab.com>
This commit is contained in:
parent
ce5c57ca77
commit
507884a123
1 changed files with 8 additions and 9 deletions
|
|
@ -58,7 +58,7 @@ struct wl_ring_buffer {
|
|||
char *data;
|
||||
size_t head, tail;
|
||||
uint32_t size_bits;
|
||||
uint32_t max_size_bits; /* 0 for unlimited */
|
||||
uint32_t max_size_bits;
|
||||
};
|
||||
|
||||
#define MAX_FDS_OUT 28
|
||||
|
|
@ -197,9 +197,6 @@ get_max_size_bits_for_size(size_t buffer_size)
|
|||
{
|
||||
uint32_t max_size_bits = WL_BUFFER_DEFAULT_SIZE_POT;
|
||||
|
||||
/* buffer_size == 0 means unbound buffer size */
|
||||
if (buffer_size == 0)
|
||||
return 0;
|
||||
|
||||
while (max_size_bits < 8 * sizeof(size_t) && size_pot(max_size_bits) < buffer_size)
|
||||
max_size_bits++;
|
||||
|
|
@ -231,10 +228,7 @@ ring_buffer_get_bits_for_size(struct wl_ring_buffer *b, size_t net_size)
|
|||
{
|
||||
size_t max_size_bits = get_max_size_bits_for_size(net_size);
|
||||
|
||||
if (max_size_bits < WL_BUFFER_DEFAULT_SIZE_POT)
|
||||
max_size_bits = WL_BUFFER_DEFAULT_SIZE_POT;
|
||||
|
||||
if (b->max_size_bits > 0 && max_size_bits > b->max_size_bits)
|
||||
if (max_size_bits > b->max_size_bits)
|
||||
max_size_bits = b->max_size_bits;
|
||||
|
||||
return max_size_bits;
|
||||
|
|
@ -300,7 +294,12 @@ wl_connection_set_max_buffer_size(struct wl_connection *connection,
|
|||
{
|
||||
uint32_t max_size_bits;
|
||||
|
||||
max_size_bits = get_max_size_bits_for_size(max_buffer_size);
|
||||
/* Max buffer size 0 means allow buffers limited only by integer
|
||||
* sizes or available memory, whichever runs out first.
|
||||
*/
|
||||
max_size_bits = max_buffer_size != 0 ?
|
||||
get_max_size_bits_for_size(max_buffer_size) :
|
||||
WL_BUFFER_MAX_SIZE_POT;
|
||||
|
||||
connection->fds_in.max_size_bits = max_size_bits;
|
||||
ring_buffer_ensure_space(&connection->fds_in, 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue