[Bf-blender-cvs] [e449bf350c9] blender-v3.4-release: Fix Wayland warning on startup when running X11

Brecht Van Lommel noreply at git.blender.org
Thu Nov 3 16:15:55 CET 2022


Commit: e449bf350c94bebd7a198b3327860da89bd490d8
Author: Brecht Van Lommel
Date:   Thu Nov 3 15:46:41 2022 +0100
Branches: blender-v3.4-release
https://developer.blender.org/rBe449bf350c94bebd7a198b3327860da89bd490d8

Fix Wayland warning on startup when running X11

On Ubuntu 20.04 running X11, there was this message on every Blender startup:
Unable to find 'wl_proxy_marshal_flags' in 'libwayland-client.so.0'.

The reason is that we build against Wayland protocols 1.21, which in turns requires
Wayland on the distribution to be 1.21+, which is not the case on Ubuntu 20.04.

This simply silences the warning. An improvement would be to explain the user that
their Wayland version is too old when neither X11 or Wayland can be found. Though
that's not trivial and a situation with old Wayland and no XWayland seems unlikely
to happen in practice.

Differential Revision: https://developer.blender.org/D16266

===================================================================

M	intern/wayland_dynload/intern/wayland_dynload_client.c
M	intern/wayland_dynload/intern/wayland_dynload_cursor.c
M	intern/wayland_dynload/intern/wayland_dynload_egl.c
M	intern/wayland_dynload/intern/wayland_dynload_libdecor.c
M	intern/wayland_dynload/intern/wayland_dynload_utils.c
M	intern/wayland_dynload/intern/wayland_dynload_utils.h

===================================================================

diff --git a/intern/wayland_dynload/intern/wayland_dynload_client.c b/intern/wayland_dynload/intern/wayland_dynload_client.c
index 68ba5374aba..617a8878199 100644
--- a/intern/wayland_dynload/intern/wayland_dynload_client.c
+++ b/intern/wayland_dynload/intern/wayland_dynload_client.c
@@ -44,7 +44,8 @@ bool wayland_dynload_client_init(const bool verbose)
 #define WAYLAND_DYNLOAD_IFACE(symbol) \
   { \
     const void *symbol_val; \
-    if (!(symbol_val = dynamic_library_find_with_error(lib, #symbol, paths[path_found]))) { \
+    if (!(symbol_val = dynamic_library_find_with_error( \
+              lib, #symbol, paths[path_found], verbose))) { \
       return false; \
     } \
     memcpy(&symbol, symbol_val, sizeof(symbol)); \
@@ -54,7 +55,7 @@ bool wayland_dynload_client_init(const bool verbose)
 
 #define WAYLAND_DYNLOAD_FN(symbol) \
   if (!(wayland_dynload_client.symbol = dynamic_library_find_with_error( \
-            lib, #symbol, paths[path_found]))) { \
+            lib, #symbol, paths[path_found], verbose))) { \
     return false; \
   }
 #include "wayland_dynload_client.h"
diff --git a/intern/wayland_dynload/intern/wayland_dynload_cursor.c b/intern/wayland_dynload/intern/wayland_dynload_cursor.c
index 3d0526c7ba6..cc62a43bc01 100644
--- a/intern/wayland_dynload/intern/wayland_dynload_cursor.c
+++ b/intern/wayland_dynload/intern/wayland_dynload_cursor.c
@@ -36,7 +36,7 @@ bool wayland_dynload_cursor_init(const bool verbose)
 
 #define WAYLAND_DYNLOAD_FN(symbol) \
   if (!(wayland_dynload_cursor.symbol = dynamic_library_find_with_error( \
-            lib, #symbol, paths[path_index]))) { \
+            lib, #symbol, paths[path_index], verbose))) { \
     return false; \
   }
 #include "wayland_dynload_cursor.h"
diff --git a/intern/wayland_dynload/intern/wayland_dynload_egl.c b/intern/wayland_dynload/intern/wayland_dynload_egl.c
index cfc195c0408..d8e4dfe0dad 100644
--- a/intern/wayland_dynload/intern/wayland_dynload_egl.c
+++ b/intern/wayland_dynload/intern/wayland_dynload_egl.c
@@ -36,7 +36,7 @@ bool wayland_dynload_egl_init(const bool verbose)
 
 #define WAYLAND_DYNLOAD_FN(symbol) \
   if (!(wayland_dynload_egl.symbol = dynamic_library_find_with_error( \
-            lib, #symbol, paths[path_found]))) { \
+            lib, #symbol, paths[path_found], verbose))) { \
     return false; \
   }
 #include "wayland_dynload_egl.h"
diff --git a/intern/wayland_dynload/intern/wayland_dynload_libdecor.c b/intern/wayland_dynload/intern/wayland_dynload_libdecor.c
index d8bdd27bb27..dafd1badfda 100644
--- a/intern/wayland_dynload/intern/wayland_dynload_libdecor.c
+++ b/intern/wayland_dynload/intern/wayland_dynload_libdecor.c
@@ -36,7 +36,7 @@ bool wayland_dynload_libdecor_init(const bool verbose)
 
 #define WAYLAND_DYNLOAD_FN(symbol) \
   if (!(wayland_dynload_libdecor.symbol = dynamic_library_find_with_error( \
-            lib, #symbol, paths[path_index]))) { \
+            lib, #symbol, paths[path_index], verbose))) { \
     return false; \
   }
 #include "wayland_dynload_libdecor.h"
diff --git a/intern/wayland_dynload/intern/wayland_dynload_utils.c b/intern/wayland_dynload/intern/wayland_dynload_utils.c
index 743dac14eec..666de20c5d3 100644
--- a/intern/wayland_dynload/intern/wayland_dynload_utils.c
+++ b/intern/wayland_dynload/intern/wayland_dynload_utils.c
@@ -30,11 +30,16 @@ DynamicLibrary dynamic_library_open_array_with_error(const char **paths,
   return lib;
 }
 
-void *dynamic_library_find_with_error(DynamicLibrary lib, const char *symbol, const char *path_lib)
+void *dynamic_library_find_with_error(DynamicLibrary lib,
+                                      const char *symbol,
+                                      const char *path_lib,
+                                      const bool verbose)
 {
   void *symbol_var = dynamic_library_find(lib, symbol);
   if (symbol_var == NULL) {
-    fprintf(stderr, "Unable to find '%s' in '%s'.\n", symbol, path_lib);
+    if (verbose) {
+      fprintf(stderr, "Unable to find '%s' in '%s'.\n", symbol, path_lib);
+    }
   }
   return symbol_var;
 }
diff --git a/intern/wayland_dynload/intern/wayland_dynload_utils.h b/intern/wayland_dynload/intern/wayland_dynload_utils.h
index 785f32521e4..1814879615b 100644
--- a/intern/wayland_dynload/intern/wayland_dynload_utils.h
+++ b/intern/wayland_dynload/intern/wayland_dynload_utils.h
@@ -26,4 +26,5 @@ DynamicLibrary dynamic_library_open_array_with_error(const char **paths,
 /** Find a symbol, printing an error when the symbol isn't found. */
 void *dynamic_library_find_with_error(DynamicLibrary lib,
                                       const char *symbol,
-                                      const char *path_lib);
+                                      const char *path_lib,
+                                      bool verbose);



More information about the Bf-blender-cvs mailing list