x11: Add gdk_x11_display_get_max_request_size()

There's multiple places in the clipboard code where I need it, so make
it a custom function.
This commit is contained in:
Benjamin Otte 2017-11-25 01:25:31 +01:00
parent 8e132ef0c4
commit c66a61d896
3 changed files with 17 additions and 8 deletions

View File

@ -54,12 +54,6 @@ struct _GdkX11ClipboardClass
G_DEFINE_TYPE (GdkX11Clipboard, gdk_x11_clipboard, GDK_TYPE_CLIPBOARD)
#define SELECTION_MAX_SIZE(display) \
MIN(262144, \
XExtendedMaxRequestSize (GDK_DISPLAY_XDISPLAY (display)) == 0 \
? XMaxRequestSize (GDK_DISPLAY_XDISPLAY (display)) - 100 \
: XExtendedMaxRequestSize (GDK_DISPLAY_XDISPLAY (display)) - 100)
static GInputStream *
text_list_convert (GdkX11Clipboard *cb,
GInputStream *stream,
@ -219,7 +213,7 @@ gdk_x11_clipboard_request_targets_finish (GObject *source_object,
gdk_content_formats_unref (formats);
g_input_stream_read_bytes_async (stream,
SELECTION_MAX_SIZE (display),
gdk_x11_display_get_max_request_size (display),
G_PRIORITY_DEFAULT,
NULL,
gdk_x11_clipboard_request_targets_finish,
@ -255,7 +249,7 @@ gdk_x11_clipboard_request_targets_got_stream (GObject *source,
display = gdk_clipboard_get_display (GDK_CLIPBOARD (cb));
g_input_stream_read_bytes_async (stream,
SELECTION_MAX_SIZE (display),
gdk_x11_display_get_max_request_size (display),
G_PRIORITY_DEFAULT,
NULL,
gdk_x11_clipboard_request_targets_finish,

View File

@ -3041,6 +3041,20 @@ gdk_x11_set_sm_client_id (const gchar *sm_client_id)
g_slist_free (displays);
}
gsize
gdk_x11_display_get_max_request_size (GdkDisplay *display)
{
Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
gsize size;
size = XExtendedMaxRequestSize (xdisplay);
if (size <= 0)
size = XMaxRequestSize (xdisplay);
size = MIN (262144, size - 100);
return size;
}
GdkX11Screen *
gdk_x11_display_get_screen (GdkDisplay *display)

View File

@ -172,6 +172,7 @@ GdkX11Screen *_gdk_x11_display_screen_for_xrootwin (GdkDisplay *display,
Window xrootwin);
void _gdk_x11_display_error_event (GdkDisplay *display,
XErrorEvent *error);
gsize gdk_x11_display_get_max_request_size (GdkDisplay *display);
GdkFilterReturn _gdk_wm_protocols_filter (GdkXEvent *xev,
GdkEvent *event,