From b4d766fba5a9ccfe7262af9032e9e2b84a3370c4 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Tue, 5 Jul 2022 11:03:11 +0800 Subject: [PATCH] Don't take XCB socket every time we want the no of the next request * src/xterm.c (x_ignore_errors_for_next_request, x_uncatch_errors) (x_check_errors, x_had_errors_p): Don't call XNextRequest redundantly. Use NextRequest if it was immediately preceded by XNextRequest, which updates dpy->request. --- src/xterm.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index 7843a46ab25..771db4a05c9 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -23148,6 +23148,7 @@ static void x_ignore_errors_for_next_request (struct x_display_info *dpyinfo) { struct x_failable_request *request, *max; + unsigned long next_request; #ifdef HAVE_GTK3 GdkDisplay *gdpy; @@ -23171,13 +23172,14 @@ x_ignore_errors_for_next_request (struct x_display_info *dpyinfo) request = dpyinfo->next_failable_request; max = dpyinfo->failable_requests + N_FAILABLE_REQUESTS; + next_request = XNextRequest (dpyinfo->display); if (request >= max) { /* There is no point in making this extra sync if all requests are known to have been fully processed. */ if ((LastKnownRequestProcessed (dpyinfo->display) - != XNextRequest (dpyinfo->display) - 1)) + != next_request - 1)) XSync (dpyinfo->display, False); x_clean_failable_requests (dpyinfo); @@ -23189,7 +23191,7 @@ x_ignore_errors_for_next_request (struct x_display_info *dpyinfo) function. */ emacs_abort (); - request->start = XNextRequest (dpyinfo->display); + request->start = next_request; request->end = 0; dpyinfo->next_failable_request++; @@ -23271,7 +23273,7 @@ x_uncatch_errors (void) != XNextRequest (x_error_message->dpy) - 1) /* Likewise if no request was made since the trap was installed. */ - && (XNextRequest (x_error_message->dpy) + && (NextRequest (x_error_message->dpy) > x_error_message->first_request)) { XSync (x_error_message->dpy, False); @@ -23306,7 +23308,7 @@ x_check_errors (Display *dpy, const char *format) are known to have been fully processed. */ if ((LastKnownRequestProcessed (dpy) != XNextRequest (dpy) - 1) - && (XNextRequest (dpy) + && (NextRequest (dpy) > x_error_message->first_request)) XSync (dpy, False); @@ -23341,7 +23343,7 @@ x_had_errors_p (Display *dpy) /* Make sure to catch any errors incurred so far. */ if ((LastKnownRequestProcessed (dpy) != XNextRequest (dpy) - 1) - && (XNextRequest (dpy) + && (NextRequest (dpy) > x_error_message->first_request)) XSync (dpy, False); -- 2.39.5