aboutsummaryrefslogtreecommitdiffstats
path: root/community/mutter/2406.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/mutter/2406.patch')
-rw-r--r--community/mutter/2406.patch275
1 files changed, 0 insertions, 275 deletions
diff --git a/community/mutter/2406.patch b/community/mutter/2406.patch
deleted file mode 100644
index 446d912cba3..00000000000
--- a/community/mutter/2406.patch
+++ /dev/null
@@ -1,275 +0,0 @@
-From 61c9e344e4273e23f3cf55fed7c9c86a97691911 Mon Sep 17 00:00:00 2001
-From: Dor Askayo <dor.askayo@gmail.com>
-Date: Sat, 7 May 2022 23:48:22 +0300
-Subject: [PATCH 1/3] screen-cast/src: Avoid undefined behavior with GSource
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Follow the existing convention in Mutter and avoid downcasting
-custom GSource structs.
-
-This fixes the following warning:
- ../src/backends/meta-screen-cast-stream-src.c:1301:20: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
- 1301 | g_clear_pointer ((GSource **) &priv->pipewire_source, g_source_destroy);
- /usr/include/glib-2.0/glib/glib-typeof.h:36:36: note: in definition of macro ‘glib_typeof’
- 36 | #define glib_typeof(t) __typeof__ (t)
- | ^
- ../src/backends/meta-screen-cast-stream-src.c:1301:3: note: in expansion of macro ‘g_clear_pointer’
- 1301 | g_clear_pointer ((GSource **) &priv->pipewire_source, g_source_destroy);
- | ^~~~~~~~~~~~~~~
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2406>
----
- src/backends/meta-screen-cast-stream-src.c | 38 +++++++++++++---------
- 1 file changed, 22 insertions(+), 16 deletions(-)
-
-diff --git a/src/backends/meta-screen-cast-stream-src.c b/src/backends/meta-screen-cast-stream-src.c
-index 1e009070ca..0d8bc17514 100644
---- a/src/backends/meta-screen-cast-stream-src.c
-+++ b/src/backends/meta-screen-cast-stream-src.c
-@@ -78,7 +78,7 @@ static guint signals[N_SIGNALS];
-
- typedef struct _MetaPipeWireSource
- {
-- GSource base;
-+ GSource source;
-
- MetaScreenCastStreamSrc *src;
- struct pw_loop *pipewire_loop;
-@@ -90,7 +90,7 @@ typedef struct _MetaScreenCastStreamSrcPrivate
-
- struct pw_context *pipewire_context;
- struct pw_core *pipewire_core;
-- MetaPipeWireSource *pipewire_source;
-+ GSource *pipewire_source;
- struct spa_hook pipewire_core_listener;
-
- gboolean is_enabled;
-@@ -1145,7 +1145,7 @@ on_core_error (void *data,
- }
-
- static gboolean
--pipewire_loop_source_prepare (GSource *base,
-+pipewire_loop_source_prepare (GSource *source,
- int *timeout)
- {
- *timeout = -1;
-@@ -1190,24 +1190,21 @@ static GSourceFuncs pipewire_source_funcs =
- pipewire_loop_source_finalize
- };
-
--static MetaPipeWireSource *
--create_pipewire_source (MetaScreenCastStreamSrc *src)
-+static GSource *
-+create_pipewire_source (MetaScreenCastStreamSrc *src,
-+ struct pw_loop *pipewire_loop)
- {
- GSource *source;
- MetaPipeWireSource *pipewire_source;
-
- source = g_source_new (&pipewire_source_funcs, sizeof (MetaPipeWireSource));
- g_source_set_name (source, "[mutter] PipeWire");
-+
- pipewire_source = (MetaPipeWireSource *) source;
- pipewire_source->src = src;
-- pipewire_source->pipewire_loop = pw_loop_new (NULL);
-- if (!pipewire_source->pipewire_loop)
-- {
-- g_source_unref ((GSource *) pipewire_source);
-- return NULL;
-- }
-+ pipewire_source->pipewire_loop = pipewire_loop;
-
-- g_source_add_unix_fd (&pipewire_source->base,
-+ g_source_add_unix_fd (source,
- pw_loop_get_fd (pipewire_source->pipewire_loop),
- G_IO_IN | G_IO_ERR);
-
-@@ -1215,7 +1212,7 @@ create_pipewire_source (MetaScreenCastStreamSrc *src)
- g_source_attach (source, NULL);
- g_source_unref (source);
-
-- return pipewire_source;
-+ return source;
- }
-
- static const struct pw_core_events core_events = {
-@@ -1231,8 +1228,17 @@ meta_screen_cast_stream_src_initable_init (GInitable *initable,
- MetaScreenCastStreamSrc *src = META_SCREEN_CAST_STREAM_SRC (initable);
- MetaScreenCastStreamSrcPrivate *priv =
- meta_screen_cast_stream_src_get_instance_private (src);
-+ struct pw_loop *pipewire_loop;
-+
-+ pipewire_loop = pw_loop_new (NULL);
-+ if (!pipewire_loop)
-+ {
-+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-+ "Failed to create PipeWire loop");
-+ return FALSE;
-+ }
-
-- priv->pipewire_source = create_pipewire_source (src);
-+ priv->pipewire_source = create_pipewire_source (src, pipewire_loop);
- if (!priv->pipewire_source)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-@@ -1240,7 +1246,7 @@ meta_screen_cast_stream_src_initable_init (GInitable *initable,
- return FALSE;
- }
-
-- priv->pipewire_context = pw_context_new (priv->pipewire_source->pipewire_loop,
-+ priv->pipewire_context = pw_context_new (pipewire_loop,
- NULL, 0);
- if (!priv->pipewire_context)
- {
-@@ -1298,7 +1304,7 @@ meta_screen_cast_stream_src_dispose (GObject *object)
- g_clear_pointer (&priv->dmabuf_handles, g_hash_table_destroy);
- g_clear_pointer (&priv->pipewire_core, pw_core_disconnect);
- g_clear_pointer (&priv->pipewire_context, pw_context_destroy);
-- g_clear_pointer ((GSource **) &priv->pipewire_source, g_source_destroy);
-+ g_clear_pointer (&priv->pipewire_source, g_source_destroy);
-
- G_OBJECT_CLASS (meta_screen_cast_stream_src_parent_class)->dispose (object);
- }
---
-GitLab
-
-
-From 40edfbcbeb64df445249ab7c467dd240ee44d7cb Mon Sep 17 00:00:00 2001
-From: Dor Askayo <dor.askayo@gmail.com>
-Date: Sat, 7 May 2022 23:59:06 +0300
-Subject: [PATCH 2/3] tests/screen-cast: Avoid undefined behavior with GSource
-
-Follow the existing convention in Mutter and avoid downcasting
-custom GSource structs.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2406>
----
- src/tests/screen-cast-client.c | 42 ++++++++++++++++++++--------------
- 1 file changed, 25 insertions(+), 17 deletions(-)
-
-diff --git a/src/tests/screen-cast-client.c b/src/tests/screen-cast-client.c
-index cdf0d7dcf5..afd6f17b02 100644
---- a/src/tests/screen-cast-client.c
-+++ b/src/tests/screen-cast-client.c
-@@ -83,18 +83,18 @@ typedef struct _ScreenCast
-
- typedef struct _PipeWireSource
- {
-- GSource base;
-+ GSource source;
-
- struct pw_loop *pipewire_loop;
- } PipeWireSource;
-
--static PipeWireSource *_pipewire_source;
-+static GSource *_pipewire_source;
- static struct pw_context *_pipewire_context;
- static struct pw_core *_pipewire_core;
- static struct spa_hook _pipewire_core_listener;
-
- static gboolean
--pipewire_loop_source_prepare (GSource *base,
-+pipewire_loop_source_prepare (GSource *source,
- int *timeout)
- {
- *timeout = -1;
-@@ -133,24 +133,26 @@ static GSourceFuncs pipewire_source_funcs =
- pipewire_loop_source_finalize
- };
-
--static PipeWireSource *
--create_pipewire_source (void)
-+static GSource *
-+create_pipewire_source (struct pw_loop *pipewire_loop)
- {
-+ GSource *source;
- PipeWireSource *pipewire_source;
-
-- pipewire_source =
-- (PipeWireSource *) g_source_new (&pipewire_source_funcs,
-- sizeof (PipeWireSource));
-- pipewire_source->pipewire_loop = pw_loop_new (NULL);
-- g_assert_nonnull (pipewire_source->pipewire_loop);
-- g_source_add_unix_fd (&pipewire_source->base,
-+ source = g_source_new (&pipewire_source_funcs,
-+ sizeof (PipeWireSource));
-+
-+ pipewire_source = (PipeWireSource *) source;
-+ pipewire_source->pipewire_loop = pipewire_loop;
-+
-+ g_source_add_unix_fd (source,
- pw_loop_get_fd (pipewire_source->pipewire_loop),
- G_IO_IN | G_IO_ERR);
-
- pw_loop_enter (pipewire_source->pipewire_loop);
-- g_source_attach (&pipewire_source->base, NULL);
-+ g_source_attach (source, NULL);
-
-- return pipewire_source;
-+ return source;
- }
-
- static void
-@@ -171,9 +173,15 @@ static const struct pw_core_events core_events = {
- static void
- init_pipewire (void)
- {
-+ struct pw_loop *pipewire_loop;
-+
- pw_init (NULL, NULL);
-- _pipewire_source = create_pipewire_source ();
-- _pipewire_context = pw_context_new (_pipewire_source->pipewire_loop,
-+
-+ pipewire_loop = pw_loop_new (NULL);
-+ g_assert_nonnull (pipewire_loop);
-+
-+ _pipewire_source = create_pipewire_source (pipewire_loop);
-+ _pipewire_context = pw_context_new (pipewire_loop,
- NULL, 0);
- g_assert_nonnull (_pipewire_context);
- _pipewire_core = pw_context_connect (_pipewire_context, NULL, 0);
-@@ -192,8 +200,8 @@ release_pipewire (void)
- g_clear_pointer (&_pipewire_context, pw_context_destroy);
- if (_pipewire_source)
- {
-- g_source_destroy ((GSource *) _pipewire_source);
-- g_source_unref ((GSource *) _pipewire_source);
-+ g_source_destroy (_pipewire_source);
-+ g_source_unref (_pipewire_source);
- _pipewire_source = NULL;
- }
- }
---
-GitLab
-
-
-From 570b94fc43e72ab575c92c07ffa37b8b48f933c1 Mon Sep 17 00:00:00 2001
-From: Dor Askayo <dor.askayo@gmail.com>
-Date: Sun, 8 May 2022 00:09:44 +0300
-Subject: [PATCH 3/3] meson: Add -Werror=strict-aliasing
-
-This warning can point out design issues, so it should be useful to
-have it treated as error.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2406>
----
- meson.build | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/meson.build b/meson.build
-index d6c1e10b62..21ba74e5fa 100644
---- a/meson.build
-+++ b/meson.build
-@@ -427,6 +427,7 @@ if buildtype != 'plain'
- '-Werror=pointer-to-int-cast',
- '-Werror=empty-body',
- '-Werror=write-strings',
-+ '-Werror=strict-aliasing',
- '-Wno-sign-compare',
- '-Wno-cast-function-type',
- '-Wno-unused-parameter',
---
-GitLab
-