Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions wayland-backend/src/rs/server_impl/common_poll.rs
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,8 @@ impl<D> InnerBackend<D> {
}
Ok(dispatched)
}

pub fn set_max_buffer_size(&self, _: usize) {}
}

enum DispatchAction<D: 'static> {
Expand Down
8 changes: 8 additions & 0 deletions wayland-backend/src/server_api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -578,6 +578,14 @@ impl<D> Backend<D> {
pub fn dispatch_all_clients(&mut self, data: &mut D) -> std::io::Result<usize> {
self.backend.dispatch_all_clients(data)
}

/// Set wl_client max buffer size.
///
/// This method will only affect connections created after the method call.
/// only for libwayland backend
pub fn set_max_buffer_size(&mut self, max_buffer_size: usize) {
self.backend.set_max_buffer_size(max_buffer_size);
}
}

// Workaround: Some versions of rustc throw a `struct is never constructed`-warning here,
Expand Down
11 changes: 11 additions & 0 deletions wayland-backend/src/sys/server_impl/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,17 @@ impl<D> InnerBackend<D> {
Ok(ret as usize)
}
}

pub fn set_max_buffer_size(&mut self, max_buffer_size: usize) {
unsafe {
ffi_dispatch!(
wayland_server_handle(),
wl_display_set_default_max_buffer_size,
self.display_ptr,
max_buffer_size
);
}
}
}

impl<D> Drop for State<D> {
Expand Down
1 change: 1 addition & 0 deletions wayland-sys/src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ external_library!(WaylandServer, "wayland-server",
fn wl_display_add_client_created_listener(*mut wl_display, *mut wl_listener) -> (),
fn wl_display_set_global_filter(*mut wl_display, wl_display_global_filter_func_t, *mut c_void) -> (),
fn wl_display_get_client_list(*mut wl_display) -> *mut wl_list,
fn wl_display_set_default_max_buffer_size(*mut wl_display, usize) -> (),
// wl_event_loop
fn wl_event_loop_create() -> *mut wl_event_loop,
fn wl_event_loop_destroy(*mut wl_event_loop) -> (),
Expand Down