- migrated to Exherbo

- added a few initial Pantheon components
This commit is contained in:
Martin Sekera 2018-12-08 23:26:56 +01:00
parent cb6360a7e8
commit 2d2bbbc830
85 changed files with 931 additions and 2 deletions

View file

@ -0,0 +1,129 @@
Upstream: Yes
Reason_ Work with pipewire 0.2
From 0407a8b33d8c3503fba63ad260984bb08bd6e0dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Mon, 9 Jul 2018 17:27:47 +0200
Subject: [PATCH] screen-cast-src: Port to pipewire master
The PipeWire master branch saw some backports from the work branch,
including API changes making the 0.1 series more aligned with future
plans. Make mutter use the new API. This is needed to avoid dead locks
that existed in the older version.
---
src/backends/meta-screen-cast-stream-src.c | 46 +++++++++++-----------
1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/src/backends/meta-screen-cast-stream-src.c b/src/backends/meta-screen-cast-stream-src.c
index 337755002..8cd8911ae 100644
--- a/src/backends/meta-screen-cast-stream-src.c
+++ b/src/backends/meta-screen-cast-stream-src.c
@@ -132,8 +132,8 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src)
{
MetaScreenCastStreamSrcPrivate *priv =
meta_screen_cast_stream_src_get_instance_private (src);
- uint32_t buffer_id;
- struct spa_buffer *buffer;
+ struct pw_buffer *buffer;
+ struct spa_buffer *spa_buffer;
uint8_t *map = NULL;
uint8_t *data;
uint64_t now_us;
@@ -148,22 +148,24 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src)
if (!priv->pipewire_stream)
return;
- buffer_id = pw_stream_get_empty_buffer (priv->pipewire_stream);
- if (buffer_id == SPA_ID_INVALID)
- return;
-
- buffer = pw_stream_peek_buffer (priv->pipewire_stream, buffer_id);
+ buffer = pw_stream_dequeue_buffer (priv->pipewire_stream);
if (!buffer)
{
- g_warning ("Failed to peek at PipeWire buffer");
+ g_warning ("Failed to dequeue at PipeWire buffer");
return;
}
- if (buffer->datas[0].type == priv->pipewire_type->data.MemFd)
+ spa_buffer = buffer->buffer;
+
+ if (spa_buffer->datas[0].data)
+ {
+ data = spa_buffer->datas[0].data;
+ }
+ else if (spa_buffer->datas[0].type == priv->pipewire_type->data.MemFd)
{
- map = mmap (NULL, buffer->datas[0].maxsize + buffer->datas[0].mapoffset,
+ map = mmap (NULL, spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset,
PROT_READ | PROT_WRITE, MAP_SHARED,
- buffer->datas[0].fd, 0);
+ spa_buffer->datas[0].fd, 0);
if (map == MAP_FAILED)
{
g_warning ("Failed to mmap pipewire stream buffer: %s\n",
@@ -171,14 +173,11 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src)
return;
}
- data = SPA_MEMBER (map, buffer->datas[0].mapoffset, uint8_t);
- }
- else if (buffer->datas[0].type == priv->pipewire_type->data.MemPtr)
- {
- data = buffer->datas[0].data;
+ data = SPA_MEMBER (map, spa_buffer->datas[0].mapoffset, uint8_t);
}
else
{
+ g_warning ("Unhandled spa buffer type: %d", spa_buffer->datas[0].type);
return;
}
@@ -186,11 +185,11 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src)
priv->last_frame_timestamp_us = now_us;
if (map)
- munmap (map, buffer->datas[0].maxsize + buffer->datas[0].mapoffset);
+ munmap (map, spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset);
- buffer->datas[0].chunk->size = buffer->datas[0].maxsize;
+ spa_buffer->datas[0].chunk->size = spa_buffer->datas[0].maxsize;
- pw_stream_send_buffer (priv->pipewire_stream, buffer_id);
+ pw_stream_queue_buffer (priv->pipewire_stream, buffer);
}
static gboolean
@@ -266,8 +265,8 @@ on_stream_state_changed (void *data,
}
static void
-on_stream_format_changed (void *data,
- struct spa_pod *format)
+on_stream_format_changed (void *data,
+ const struct spa_pod *format)
{
MetaScreenCastStreamSrc *src = data;
MetaScreenCastStreamSrcPrivate *priv =
@@ -276,7 +275,7 @@ on_stream_format_changed (void *data,
uint8_t params_buffer[1024];
int32_t width, height, stride, size;
struct spa_pod_builder pod_builder;
- struct spa_pod *params[1];
+ const struct spa_pod *params[1];
const int bpp = 4;
if (!format)
@@ -372,7 +371,8 @@ create_pipewire_stream (MetaScreenCastStreamSrc *src,
result = pw_stream_connect (pipewire_stream,
PW_DIRECTION_OUTPUT,
NULL,
- PW_STREAM_FLAG_NONE,
+ (PW_STREAM_FLAG_DRIVER |
+ PW_STREAM_FLAG_MAP_BUFFERS),
params, G_N_ELEMENTS (params));
if (result != 0)
{
--
2.17.1

View file

@ -0,0 +1,20 @@
Upstream: Yes, rebased for 3.28.3 here
From c216397974a7d75a3fdb374becbc40a23ec878bf Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Mon, 6 Aug 2018 10:05:36 +0200
Subject: [PATCH] Update libpipewire requirements
PipeWire 0.2.2+ now provides libpipewire-0.2 and not libpipewire-0.1 anymore
diff --git a/configure.ac b/configure.ac
index e795159..9adb14b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -245,7 +245,7 @@ AC_ARG_ENABLE(remote-desktop,
enable_remote_desktop=no
)
AS_IF([test "$enable_remote_desktop" = "yes"], [
- MUTTER_PC_MODULES="$MUTTER_PC_MODULES libpipewire-0.1 >= 0.1.8"
+ MUTTER_PC_MODULES="$MUTTER_PC_MODULES libpipewire-0.2 >= 0.2.2"
AC_DEFINE([HAVE_REMOTE_DESKTOP],[1], [Defined if screen cast and remote desktop support is enabled])
])
AM_CONDITIONAL([HAVE_REMOTE_DESKTOP],[test "$enable_remote_desktop" = "yes"])

View file

@ -0,0 +1,94 @@
# Copyright 2009 Saleem Abdulrasool <compnerd@compnerd.org>
# Copyright 2011 Brett Witherspoon <spoonb@exherbo.org>
# Distributed under the terms of the GNU General Public License v2
require gnome.org [ suffix=tar.xz ] gsettings autotools [ supported_autoconf=[ 2.5 ] supported_automake=[ 1.16 ] ]
SUMMARY="Clutter and metacity based compositing window manager"
LICENCES="GPL-2"
SLOT="0"
PLATFORMS="~amd64 ~x86"
MYOPTIONS="gobject-introspection
remote-desktop [[ description = [ Support remote desktop and screen casting ] ]]
sound [[ description = [ Enable the use of libcanberra for event sounds ] ]]
wacom [[ description = [ Use libwacom for tablet identification ] ]]
( linguas: am ar as ast az be be@latin bg bn bn_IN br bs ca ca@valencia cs cy da de dz el en_CA
en_GB eo es et eu fa fi fr fur ga gl gu ha he hi hr hu hy id ig is it ja ka kk kn ko ku
la lt lv mai mg mk ml mn mr ms nb nds ne nl nn oc or pa pl pt pt_BR ro ru rw si sk
sl sq sr sr@latin sv ta te tg th tk tr ug uk vi wa xh yo zh_CN zh_HK zh_TW )
( providers: elogind systemd ) [[
*description = [ Session tracking provider ]
number-selected = at-most-one
]]
"
BUGS_TO="spoonb@exherbo.org"
DEPENDENCIES="
build:
sys-devel/gettext[>=0.19.6]
sys-libs/wayland-protocols[>=1.12]
virtual/pkg-config[>=0.21]
build+run:
core/json-glib
dev-libs/glib:2[>=2.53.2]
gnome-desktop/gnome-desktop:3.0
gnome-desktop/gsettings-desktop-schemas[>=3.21.4][gobject-introspection?]
gnome-desktop/libgudev[>=232]
gnome-desktop/zenity
sys-apps/upower[>=0.99.0]
sys-libs/libinput[>=1.4]
sys-libs/wayland[>=1.13.0]
x11-apps/xkeyboard-config
x11-dri/mesa[>=10.3]
x11-dri/libdrm[>=2.4.83]
x11-libs/cairo[>=1.10.0]
x11-libs/gtk+:3[>=3.19.8][gobject-introspection?][wayland]
x11-libs/pango[>=1.2.0]
x11-libs/libICE
x11-libs/libSM
x11-libs/libX11
x11-libs/libXcomposite[>=0.2]
x11-libs/libXcursor
x11-libs/libXdamage
x11-libs/libXext
x11-libs/libXfixes
x11-libs/libXi[>=1.6.99.1]
x11-libs/libXinerama
x11-libs/libXrandr[>=1.5.0]
x11-libs/libXrender
x11-libs/libxcb
x11-libs/libxkbcommon[X][>=0.4.3]
x11-libs/libxkbfile
x11-libs/startup-notification[>=0.7]
gobject-introspection? ( gnome-desktop/gobject-introspection:1[>=0.9.5] )
providers:elogind? ( sys-auth/elogind )
providers:systemd? ( sys-apps/systemd )
remote-desktop? ( media/pipewire[>=0.2.2] )
sound? ( media-libs/libcanberra[providers:gtk3][>=0.26] )
wacom? ( x11-libs/libwacom[>=0.19] )
run:
x11-server/xorg-server[xwayland]
recommendation:
gnome-desktop/gnome-themes-standard [[
description = [ Provides default GNOME 3 theme (Adwaita) ]
]]
"
# Bundled clutter fails its tests
RESTRICT="test"
DEFAULT_SRC_PREPARE_PATCHES=(
"${FILES}"/c216397974a7d75a3fdb374becbc40a23ec878bf.patch
"${FILES}"/0407a8b33d8c3503fba63ad260984bb08bd6e0dc.patch
)
DEFAULT_SRC_CONFIGURE_PARAMS=( '--enable-sm' '--enable-startup-notification' '--disable-debug'
'--enable-native-backend' '--enable-wayland' '--enable-gudev'
'--enable-egl-device' '--disable-scrollkeeper' '--disable-static'
# need to reduce default compiler warnings due to deprecation errors
'--enable-compile-warnings=maximum' )
DEFAULT_SRC_CONFIGURE_OPTION_ENABLES=( 'gobject-introspection introspection' 'remote-desktop' 'wacom libwacom' )
DEFAULT_SRC_CONFIGURE_OPTION_WITHS=( 'sound libcanberra' )