]> git.eshelyaron.com Git - emacs.git/commitdiff
Resurrect SVG support on MS-Windows
authorEli Zaretskii <eliz@gnu.org>
Thu, 11 Jul 2019 13:28:41 +0000 (16:28 +0300)
committerEli Zaretskii <eliz@gnu.org>
Thu, 11 Jul 2019 13:28:41 +0000 (16:28 +0300)
* src/image.c (syms_of_image) <Qgio> [HAVE_NTGUI]: New DEFSYM.
(init_svg_functions) [LIBRSVG_CHECK_VERSION >= 2.32.0]: Load
g_file_new_for_path and g_memory_input_stream_new_from_data
from libgio, not from libglib.  (Bug#35548)

* lisp/term/w32-win.el (dynamic-library-alist): Add the libgio
DLL.

lisp/term/w32-win.el
src/image.c

index 044b82ed1e00b2f70b6b8145772de3612e531118..198182fca720f131632f0f83f020eff8ae954b96 100644 (file)
@@ -279,6 +279,7 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
        '(svg "librsvg-2-2.dll")
        '(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
        '(glib "libglib-2.0-0.dll")
+       '(gio "libgio-2.0-0.dll")
        '(gobject "libgobject-2.0-0.dll")
        (if (>= libgnutls-version 30400)
           '(gnutls "libgnutls-30.dll")
index 3695342232d6d82caa3a635c795154f7528dc498..b081d4b9123d6dd402ccc495ace237c873543979 100644 (file)
@@ -9336,22 +9336,26 @@ DEF_DLL_FN (void, g_clear_error, (GError **));
 static bool
 init_svg_functions (void)
 {
-  HMODULE library, gdklib = NULL, glib = NULL, gobject = NULL;
+  HMODULE library, gdklib = NULL, glib = NULL, gobject = NULL, giolib = NULL;
 
   if (!(glib = w32_delayed_load (Qglib))
       || !(gobject = w32_delayed_load (Qgobject))
+#  if LIBRSVG_CHECK_VERSION (2, 32, 0)
+      || !(giolib = w32_delayed_load (Qgio))
+#  endif
       || !(gdklib = w32_delayed_load (Qgdk_pixbuf))
       || !(library = w32_delayed_load (Qsvg)))
     {
       if (gdklib)  FreeLibrary (gdklib);
+      if (giolib)  FreeLibrary (giolib);
       if (gobject) FreeLibrary (gobject);
       if (glib)    FreeLibrary (glib);
       return 0;
     }
 
 #if LIBRSVG_CHECK_VERSION (2, 32, 0)
-  LOAD_DLL_FN (glib, g_file_new_for_path);
-  LOAD_DLL_FN (glib, g_memory_input_stream_new_from_data);
+  LOAD_DLL_FN (giolib, g_file_new_for_path);
+  LOAD_DLL_FN (giolib, g_memory_input_stream_new_from_data);
   LOAD_DLL_FN (library, rsvg_handle_new_from_stream_sync);
 #else
   LOAD_DLL_FN (library, rsvg_handle_new);
@@ -10229,6 +10233,9 @@ non-numeric, there is no explicit limit on the size of images.  */);
   /* Other libraries used directly by svg code.  */
   DEFSYM (Qgdk_pixbuf, "gdk-pixbuf");
   DEFSYM (Qglib, "glib");
+# if LIBRSVG_CHECK_VERSION (2, 32, 0)
+  DEFSYM (Qgio,  "gio");
+# endif
   DEFSYM (Qgobject, "gobject");
 #endif /* HAVE_NTGUI  */
 #endif /* HAVE_RSVG  */