diff --git a/src/backend/wayland/buffer.c b/src/backend/wayland/buffer.c index a11bc309..2280bd7d 100644 --- a/src/backend/wayland/buffer.c +++ b/src/backend/wayland/buffer.c @@ -62,8 +62,8 @@ void MwLLWaylandBufferSetup(struct _MwLLWaylandShmBuffer* buffer, MwU32 width, M buffer->fd = mkstemp(temp_name); buffer->fd_back = mkstemp(temp_name_back); - if(buffer->fd >= FD_SETSIZE - 1) { - MwDispatchError(-1, "Amount of allocated buffers has reached FD_SETSIZE! Cannot continue.\n"); + if(buffer->fd >= 65536) { + MwDispatchError(-1, "Amount of allocated buffers has gone above 65536! Cannot continue.\n"); return; } diff --git a/src/backend/wayland/wayland.c b/src/backend/wayland/wayland.c index 227ced43..973b6f47 100644 --- a/src/backend/wayland/wayland.c +++ b/src/backend/wayland/wayland.c @@ -2,6 +2,7 @@ #include #include +#include #include "../../../external/stb_ds.h" @@ -1968,6 +1969,17 @@ static int MwLLWaylandCallInitImpl(void) { char* milsko_backend_env = getenv("MILSKO_BACKEND"); char* mw_backend_env = getenv("MW_BACKEND"); + struct rlimit rl; + + /* Set both soft and hard limit to 65536 file descriptors */ + rl.rlim_cur = 65536; /* soft limit */ + rl.rlim_max = 65536; /* hard limit */ + + if(setrlimit(RLIMIT_NOFILE, &rl) == -1) { + perror("setrlimit"); + return 1; + } + if(milsko_backend_env || mw_backend_env) { if(milsko_backend_env) { /*