From 6cb2526b675be0c7af2840e6bd951fef64486d02 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Wed, 23 Feb 2022 13:24:49 +0000 Subject: [PATCH] Move shell-utils to its own directory shell-utils contains a number of helpers which are currently in use by both desktop-shell and kiosk-shell. In order to extend this use to fullscreen-shell as well (which can benefit from reusing the weston_curtain infrastructure to be able to create solid-colour views which may or may not be opaque, as well as one function within fullscreen-shell which was copied wholesale to shell-utils), we need to create a separate Meson dependency object, and avoid the existing pattern of including the source from shared/ within the source list for each shell. This requires creating a new top-level directory for these shared helper functions which are required by each shell, but are not part of libweston in and of itself. shell-utils depends on libweston-desktop; libweston-desktop depends on libweston; libweston depends on shared. Thus it is not possible to expose a dependency object from the shared/ directory which declares a dependency on the libweston-desktop dependency, as Meson processes directories in order and resolves variable references as they are parsed. In order to break this deadlock, this commit creates a new top-level directory called 'shell-utils' containing only this file, which can be parsed by Meson after libweston-desktop (making the libweston-desktop Meson dependency variable available to the build file to declare a dependency on that), but before the shells (making the new Meson depenendency object available to each shell which wishes to use it). This commit contains no functional changes to any observable code. Signed-off-by: Daniel Stone --- desktop-shell/meson.build | 2 +- desktop-shell/shell.c | 2 +- kiosk-shell/kiosk-shell.c | 2 +- kiosk-shell/meson.build | 2 +- meson.build | 1 + shell-utils/meson.build | 5 +++++ {shared => shell-utils}/shell-utils.c | 2 +- {shared => shell-utils}/shell-utils.h | 0 tests/meson.build | 3 +-- tests/safe-signal-output-removal-test.c | 2 +- 10 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 shell-utils/meson.build rename {shared => shell-utils}/shell-utils.c (99%) rename {shared => shell-utils}/shell-utils.h (100%) diff --git a/desktop-shell/meson.build b/desktop-shell/meson.build index cc7215cb..c6f374ee 100644 --- a/desktop-shell/meson.build +++ b/desktop-shell/meson.build @@ -5,7 +5,6 @@ if get_option('shell-desktop') 'shell.c', 'exposay.c', 'input-panel.c', - '../shared/shell-utils.c', weston_desktop_shell_server_protocol_h, weston_desktop_shell_protocol_c, input_method_unstable_v1_server_protocol_h, @@ -17,6 +16,7 @@ if get_option('shell-desktop') dep_libshared, dep_lib_desktop, dep_libweston_public, + dep_shell_utils, ] plugin_shell_desktop = shared_library( 'desktop-shell', diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index 2b3ec429..ce8b18ec 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -41,8 +41,8 @@ #include "weston-desktop-shell-server-protocol.h" #include #include "shared/helpers.h" -#include "shared/shell-utils.h" #include "shared/timespec-util.h" +#include "shell-utils.h" #include #define DEFAULT_NUM_WORKSPACES 1 diff --git a/kiosk-shell/kiosk-shell.c b/kiosk-shell/kiosk-shell.c index 66aa3910..950e5811 100644 --- a/kiosk-shell/kiosk-shell.c +++ b/kiosk-shell/kiosk-shell.c @@ -33,7 +33,7 @@ #include "kiosk-shell-grab.h" #include "compositor/weston.h" #include "shared/helpers.h" -#include "shared/shell-utils.h" +#include "shell-utils.h" #include diff --git a/kiosk-shell/meson.build b/kiosk-shell/meson.build index c3a37da2..95d94721 100644 --- a/kiosk-shell/meson.build +++ b/kiosk-shell/meson.build @@ -2,7 +2,6 @@ if get_option('shell-kiosk') srcs_shell_kiosk = [ 'kiosk-shell.c', 'kiosk-shell-grab.c', - '../shared/shell-utils.c', weston_desktop_shell_server_protocol_h, weston_desktop_shell_protocol_c, input_method_unstable_v1_server_protocol_h, @@ -14,6 +13,7 @@ if get_option('shell-kiosk') dep_libshared, dep_lib_desktop, dep_libweston_public, + dep_shell_utils, ] plugin_shell_kiosk = shared_library( 'kiosk-shell', diff --git a/meson.build b/meson.build index 182d3f7d..67917dea 100644 --- a/meson.build +++ b/meson.build @@ -171,6 +171,7 @@ subdir('libweston') subdir('libweston-desktop') subdir('xwayland') subdir('compositor') +subdir('shell-utils') subdir('desktop-shell') subdir('fullscreen-shell') subdir('ivi-shell') diff --git a/shell-utils/meson.build b/shell-utils/meson.build new file mode 100644 index 00000000..02ae9001 --- /dev/null +++ b/shell-utils/meson.build @@ -0,0 +1,5 @@ +dep_shell_utils = declare_dependency( + sources: 'shell-utils.c', + include_directories: include_directories('.'), + dependencies: dep_lib_desktop +) diff --git a/shared/shell-utils.c b/shell-utils/shell-utils.c similarity index 99% rename from shared/shell-utils.c rename to shell-utils/shell-utils.c index 7a2f1df5..51089328 100644 --- a/shared/shell-utils.c +++ b/shell-utils/shell-utils.c @@ -25,7 +25,7 @@ */ #include "config.h" -#include "shared/shell-utils.h" +#include "shell-utils.h" #include struct weston_output * diff --git a/shared/shell-utils.h b/shell-utils/shell-utils.h similarity index 100% rename from shared/shell-utils.h rename to shell-utils/shell-utils.h diff --git a/tests/meson.build b/tests/meson.build index 5b1f0418..da78b407 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -217,9 +217,8 @@ tests = [ { 'name': 'safe-signal-output-removal', 'sources': [ 'safe-signal-output-removal-test.c', - '../shared/shell-utils.c', ], - 'dep_objs': [ dep_lib_desktop ] + 'dep_objs': [ dep_lib_desktop, dep_shell_utils ] }, ] diff --git a/tests/safe-signal-output-removal-test.c b/tests/safe-signal-output-removal-test.c index 6eb28085..596ca498 100644 --- a/tests/safe-signal-output-removal-test.c +++ b/tests/safe-signal-output-removal-test.c @@ -30,7 +30,7 @@ #include #include "../shared/signal.h" -#include "../shared/shell-utils.h" +#include "shell-utils.h" #include "weston-test-client-helper.h" #include "weston-test-fixture-compositor.h"