aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorVaxry <[email protected]>2024-09-30 17:25:39 +0100
committerVaxry <[email protected]>2024-09-30 17:25:57 +0100
commit3ddb16bd5bb7146d125a7d68e4e9f3b54c381a20 (patch)
treeae8fac53a2e6f7886f5599d5175f45793d18491f
parentf6387536f62454f82039b42f641cd8c44153ad47 (diff)
downloadHyprland-3ddb16bd5bb7146d125a7d68e4e9f3b54c381a20.tar.gz
Hyprland-3ddb16bd5bb7146d125a7d68e4e9f3b54c381a20.zip
compositor/wayland: up the max buffer size to avoid disconnects when app hangs
-rw-r--r--CMakeLists.txt2
-rw-r--r--src/Compositor.cpp4
-rw-r--r--src/helpers/ByteOperations.hpp52
3 files changed, 57 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ee9cd2e2..3440af4a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -110,7 +110,7 @@ pkg_check_modules(
IMPORTED_TARGET
xkbcommon
uuid
- wayland-server
+ wayland-server>=1.22.90
wayland-protocols
cairo
pango
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 232ba4a6..25d73db0 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -28,6 +28,7 @@
#include "desktop/LayerSurface.hpp"
#include "render/Renderer.hpp"
#include "xwayland/XWayland.hpp"
+#include "helpers/ByteOperations.hpp"
#include <hyprutils/string/String.hpp>
#include <aquamarine/input/Input.hpp>
@@ -229,6 +230,9 @@ void CCompositor::initServer(std::string socketName, int socketFd) {
if (envEnabled("HYPRLAND_TRACE"))
Debug::trace = true;
+ // set the buffer size to 1MB to avoid disconnects due to an app hanging for a short while
+ wl_display_set_default_max_buffer_size(m_sWLDisplay, 1_MB);
+
Aquamarine::SBackendOptions options;
options.logFunction = aqLog;
diff --git a/src/helpers/ByteOperations.hpp b/src/helpers/ByteOperations.hpp
new file mode 100644
index 00000000..6d9507ff
--- /dev/null
+++ b/src/helpers/ByteOperations.hpp
@@ -0,0 +1,52 @@
+#pragma once
+
+#define ULL unsigned long long
+#define LD long double
+
+constexpr ULL operator""_kB(const ULL BYTES) {
+ return BYTES * 1024;
+}
+constexpr ULL operator""_MB(const ULL BYTES) {
+ return BYTES * 1024 * 1024;
+}
+constexpr ULL operator""_GB(const ULL BYTES) {
+ return BYTES * 1024 * 1024 * 1024;
+}
+constexpr ULL operator""_TB(const ULL BYTES) {
+ return BYTES * 1024 * 1024 * 1024 * 1024;
+}
+constexpr LD operator""_kB(const LD BYTES) {
+ return BYTES * 1024;
+}
+constexpr LD operator""_MB(const LD BYTES) {
+ return BYTES * 1024 * 1024;
+}
+constexpr LD operator""_GB(const LD BYTES) {
+ return BYTES * 1024 * 1024 * 1024;
+}
+constexpr LD operator""_TB(const LD BYTES) {
+ return BYTES * 1024 * 1024 * 1024 * 1024;
+}
+
+template <typename T>
+using __acceptable_byte_operation_type = typename std::enable_if<std::is_trivially_constructible<T, ULL>::value || std::is_trivially_constructible<T, LD>::value>::type;
+
+template <typename X, typename = __acceptable_byte_operation_type<X>>
+constexpr X kBtoBytes(const X kB) {
+ return kB * 1024;
+}
+template <typename X, typename = __acceptable_byte_operation_type<X>>
+constexpr X MBtoBytes(const X MB) {
+ return MB * 1024 * 1024;
+}
+template <typename X, typename = __acceptable_byte_operation_type<X>>
+constexpr X GBtoBytes(const X GB) {
+ return GB * 1024 * 1024 * 1024;
+}
+template <typename X, typename = __acceptable_byte_operation_type<X>>
+constexpr X TBtoBytes(const X TB) {
+ return TB * 1024 * 1024 * 1024 * 1024;
+}
+
+#undef ULL
+#undef LD \ No newline at end of file