[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 8c184bb166: Get rid of calls to XRenderQueryExtension after termi
From: |
Po Lu |
Subject: |
master 8c184bb166: Get rid of calls to XRenderQueryExtension after terminal initialization |
Date: |
Wed, 19 Jan 2022 21:49:42 -0500 (EST) |
branch: master
commit 8c184bb166048e9ae65245cab75a4d49642a69fe
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Get rid of calls to XRenderQueryExtension after terminal initialization
* src/image.c (x_create_xrender_picture):
(Fimage_transforms_p): Use `xrender_supported_p'.
* src/xterm.c (x_term_init): Query for XRender support and
extension versions.
* src/xterm.h (struct x_display_info): New fields
`xrender_supported_p', `xrender_major' and `xrender_minor'.
---
src/image.c | 6 ++----
src/xterm.c | 18 +++++++++++++-----
src/xterm.h | 6 ++++++
3 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/src/image.c b/src/image.c
index a4976caba8..ce9af2dd67 100644
--- a/src/image.c
+++ b/src/image.c
@@ -2906,9 +2906,8 @@ x_create_xrender_picture (struct frame *f, Emacs_Pixmap
pixmap, int depth)
{
Picture p;
Display *display = FRAME_X_DISPLAY (f);
- int event_basep, error_basep;
- if (XRenderQueryExtension (display, &event_basep, &error_basep))
+ if (FRAME_DISPLAY_INFO (f)->xrender_supported_p)
{
if (depth <= 0)
depth = DefaultDepthOfScreen (FRAME_X_SCREEN (f));
@@ -11198,8 +11197,7 @@ The list of capabilities can include one or more of the
following:
# elif defined (HAVE_X_WINDOWS) && defined (HAVE_XRENDER)
int event_basep, error_basep;
- if (XRenderQueryExtension (FRAME_X_DISPLAY (f),
- &event_basep, &error_basep))
+ if (FRAME_DISPLAY_INFO (f)->xrender_supported_p)
return list2 (Qscale, Qrotate90);
# elif defined (HAVE_NTGUI)
return (w32_image_rotations_p ()
diff --git a/src/xterm.c b/src/xterm.c
index d3619f5b5e..7a63d9353a 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -15393,6 +15393,19 @@ x_term_init (Lisp_Object display_name, char
*xrm_option, char *resource_name)
}
#endif
+#ifdef HAVE_XRENDER
+ int event_base, error_base;
+ dpyinfo->xrender_supported_p
+ = XRenderQueryExtension (dpyinfo->display, &event_base, &error_base);
+
+ if (dpyinfo->xrender_supported_p)
+ {
+ if (!XRenderQueryVersion (dpyinfo->display, &dpyinfo->xrender_major,
+ &dpyinfo->xrender_minor))
+ dpyinfo->xrender_supported_p = false;
+ }
+#endif
+
#if defined USE_CAIRO || defined HAVE_XFT
{
/* If we are using Xft, the following precautions should be made:
@@ -15409,11 +15422,6 @@ x_term_init (Lisp_Object display_name, char
*xrm_option, char *resource_name)
or larger than other for other applications, even if it is the same
font name (monospace-10 for example). */
-# ifdef HAVE_XRENDER
- int event_base, error_base;
- XRenderQueryExtension (dpyinfo->display, &event_base, &error_base);
-# endif
-
char *v = XGetDefault (dpyinfo->display, "Xft", "dpi");
double d;
if (v != NULL && sscanf (v, "%lf", &d) == 1)
diff --git a/src/xterm.h b/src/xterm.h
index a8eb6ee547..26b2851590 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -540,6 +540,12 @@ struct x_display_info
#ifdef USE_GTK
bool prefer_native_input;
#endif
+
+#ifdef HAVE_XRENDER
+ bool xrender_supported_p;
+ int xrender_major;
+ int xrender_minor;
+#endif
};
#ifdef HAVE_X_I18N
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 8c184bb166: Get rid of calls to XRenderQueryExtension after terminal initialization,
Po Lu <=