From 0bcc941f964853d17230d74ce06877ea28f96a2e Mon Sep 17 00:00:00 2001
From: Aric Stewart <aric@codeweavers.com>
Date: Tue, 24 Oct 2006 12:17:40 -0500
Subject: [PATCH] winex11.drv: Only create a fontSet if we are going to be
 using it in the XIC.

---
 dlls/winex11.drv/xim.c | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/dlls/winex11.drv/xim.c b/dlls/winex11.drv/xim.c
index ff98f017214..2be9dd29e75 100644
--- a/dlls/winex11.drv/xim.c
+++ b/dlls/winex11.drv/xim.c
@@ -456,7 +456,7 @@ err:
 
 XIC X11DRV_CreateIC(XIM xim, Display *display, Window win)
 {
-    XFontSet fontSet;
+    XFontSet fontSet = NULL;
     char **list;
     int count;
     XPoint spot = {0};
@@ -485,22 +485,27 @@ XIC X11DRV_CreateIC(XIM xim, Display *display, Window win)
         return xic;
     }
 
-    fontSet = XCreateFontSet(display,
-                      "*", /*FIXME*/
-                      &list, &count, NULL);
 
-    TRACE("ximFontSet = %p\n", fontSet);
-    TRACE("list = %p, count = %d\n", list, count);
-
-    if (list != NULL)
+    if (((ximStyle & (XIMPreeditNothing | XIMPreeditNone)) == 0) ||
+        ((ximStyle & (XIMStatusNothing | XIMStatusNone)) == 0))
     {
-        int i;
+        fontSet = XCreateFontSet(display,
+                          "*", /*FIXME*/
+                          &list, &count, NULL);
+
+        TRACE("ximFontSet = %p\n", fontSet);
+        TRACE("list = %p, count = %d\n", list, count);
 
-        for (i = 0; i < count; ++i)
+        if (list != NULL)
         {
-            TRACE("list[%d] = %s\n", i, list[i]);
+            int i;
+
+            for (i = 0; i < count; ++i)
+            {
+                TRACE("list[%d] = %s\n", i, list[i]);
+            }
+            XFreeStringList(list);
         }
-        XFreeStringList(list);
     }
 
     /* create callbacks */
-- 
GitLab