Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gnome-remote-desktop for
openSUSE:Factory checked in at 2023-05-29 22:47:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-remote-desktop (Old)
and /work/SRC/openSUSE:Factory/.gnome-remote-desktop.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-remote-desktop"
Mon May 29 22:47:56 2023 rev:19 rq:1089552 version:44.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/gnome-remote-desktop/gnome-remote-desktop.changes
2023-04-24 22:32:05.639824759 +0200
+++
/work/SRC/openSUSE:Factory/.gnome-remote-desktop.new.1533/gnome-remote-desktop.changes
2023-05-29 22:48:11.414436346 +0200
@@ -1,0 +2,17 @@
+Sun May 28 09:20:44 UTC 2023 - Bjørn Lie <[email protected]>
+
+- Update to version 44.2:
+ + vnc-pipewire-stream and rdp-pipewire-stream: Lock buffer
+ mutex before removing buffer entry.
+ + vnc and rdp: Ensure PipeWire buffers to be queued before
+ destroying them.
+ + Updated translations.
+
+-------------------------------------------------------------------
+Thu May 18 04:19:42 UTC 2023 - Luciano Santos <[email protected]>
+
+- Drop %systemd_user_postun_with_restart macro from the %postun
+ directive. It's been deprecated and emptied (expands to nil) on
+ both Tumbleweed and Leap already.
+
+-------------------------------------------------------------------
Old:
----
gnome-remote-desktop-44.1.obscpio
New:
----
gnome-remote-desktop-44.2.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-remote-desktop.spec ++++++
--- /var/tmp/diff_new_pack.5SKhc1/_old 2023-05-29 22:48:12.798444625 +0200
+++ /var/tmp/diff_new_pack.5SKhc1/_new 2023-05-29 22:48:12.802444649 +0200
@@ -22,7 +22,7 @@
%define gstreamer_version 1.10.0
Name: gnome-remote-desktop
-Version: 44.1
+Version: 44.2
Release: 0
Summary: GNOME Remote Desktop screen sharing service
License: GPL-2.0-or-later
@@ -92,9 +92,6 @@
%preun
%systemd_user_preun %{systemd_unit}
-%postun
-%systemd_user_postun_with_restart %{systemd_unit}
-
%files
%license COPYING
%doc README.md
++++++ _service ++++++
--- /var/tmp/diff_new_pack.5SKhc1/_old 2023-05-29 22:48:12.834444840 +0200
+++ /var/tmp/diff_new_pack.5SKhc1/_new 2023-05-29 22:48:12.838444865 +0200
@@ -3,7 +3,7 @@
<service name="obs_scm" mode="manual">
<param
name="url">https://gitlab.gnome.org/GNOME/gnome-remote-desktop.git</param>
<param name="scm">git</param>
- <param name="revision">refs/tags/44.1</param>
+ <param name="revision">refs/tags/44.2</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param>
</service>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.5SKhc1/_old 2023-05-29 22:48:12.870445056 +0200
+++ /var/tmp/diff_new_pack.5SKhc1/_new 2023-05-29 22:48:12.874445080 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://gitlab.gnome.org/GNOME/gnome-remote-desktop.git</param>
- <param
name="changesrevision">66e0fa21c87f82d7aaf71846dc408fb832d43146</param></service></servicedata>
+ <param
name="changesrevision">9d1ee9c9458636dbe4d3326dceec81dfefef56dd</param></service></servicedata>
(No newline at EOF)
++++++ gnome-remote-desktop-44.1.obscpio -> gnome-remote-desktop-44.2.obscpio
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-44.1/meson.build
new/gnome-remote-desktop-44.2/meson.build
--- old/gnome-remote-desktop-44.1/meson.build 2023-04-22 17:45:46.000000000
+0200
+++ new/gnome-remote-desktop-44.2/meson.build 2023-05-27 22:18:25.000000000
+0200
@@ -1,5 +1,5 @@
project('gnome-remote-desktop', 'c',
- version: '44.1',
+ version: '44.2',
meson_version: '>= 0.57.0',
default_options: ['warning_level=1',
'buildtype=debugoptimized'])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-44.1/po/it.po
new/gnome-remote-desktop-44.2/po/it.po
--- old/gnome-remote-desktop-44.1/po/it.po 2023-04-22 17:45:46.000000000
+0200
+++ new/gnome-remote-desktop-44.2/po/it.po 2023-05-27 22:18:25.000000000
+0200
@@ -3,24 +3,25 @@
# This file is distributed under the same license as the gnome-remote-desktop
package.
# Davide Ferracin <[email protected]>, 2021.
# Milo Casagrande <[email protected]>, 2022.
+# Gianvito Cavasoli <[email protected]>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-remote-desktop master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-remote-desktop/"
"issues\n"
-"POT-Creation-Date: 2022-02-25 22:19+0000\n"
-"PO-Revision-Date: 2022-03-18 09:48+0100\n"
-"Last-Translator: Milo Casagrande <[email protected]>\n"
+"POT-Creation-Date: 2023-05-05 14:01+0000\n"
+"PO-Revision-Date: 2023-05-21 02:46+0200\n"
+"Last-Translator: Gianvito Cavasoli <[email protected]>\n"
"Language-Team: Italian <[email protected]>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.0.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"X-Generator: Gtranslator 42.0\n"
-#: src/grd-daemon.c:423
+#: src/grd-daemon.c:513
msgid "GNOME Remote Desktop"
msgstr "Computer remoto GNOME"
@@ -46,16 +47,16 @@
msgid "Accept"
msgstr "Accetta"
-#: src/grd-ctl.c:44
+#: src/grd-ctl.c:53
#, c-format
msgid "Usage: %s [OPTIONS...] COMMAND [SUBCOMMAND]...\n"
msgstr "Uso: %s [OPZIONI...] COMANDO [SOTTOCOMANDO]...\n"
-#: src/grd-ctl.c:383
+#: src/grd-ctl.c:461
msgid "Commands:\n"
msgstr "Comandi:\n"
-#: src/grd-ctl.c:388
+#: src/grd-ctl.c:466
msgid ""
" rdp - RDP subcommands:\n"
" enable - Enable the RDP backend\n"
@@ -93,7 +94,7 @@
" dispositivi di ingresso\n"
"\n"
-#: src/grd-ctl.c:407
+#: src/grd-ctl.c:485
msgid ""
" vnc - VNC subcommands:\n"
" enable - Enable the VNC backend\n"
@@ -124,16 +125,20 @@
" dispositivi di ingresso\n"
"\n"
-#: src/grd-ctl.c:422
+#: src/grd-ctl.c:500
msgid ""
" status [--show-credentials] - Show current status\n"
"\n"
"Options:\n"
+" --headless - Use headless credentials "
+"storage\n"
" --help - Print this help text\n"
msgstr ""
" status [--show-credentials] - Mostra lo stato attuale\n"
"\n"
"Opzioni:\n"
+" --headless - Usa l'archiviazione delle "
+"credenziali headless\n"
" --help - Stampa questo aiuto\n"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
@@ -141,7 +146,7 @@
msgstr "Indica se il motore RDP è abilitato o meno"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
-msgid "If set to to 'true' the RDP backend will be initialized."
+msgid "If set to 'true' the RDP backend will be initialized."
msgstr "Se impostato a VERO, il motore RDP verrà inizializzato."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:14
@@ -156,10 +161,10 @@
"([MS-RDPBCGR] 2.2.1.3.2) or the client monitor data ([MS-RDPBCGR] "
"2.2.1.3.6), depending on what is available. When using a remote desktop "
"session with a virtual monitor, clients can resize the resolution of the "
-"virtual monitor during a session with the Display Control Channel Extension "
-"([MS-RDPEDISP]). Allowed screenshare modes include: * mirror-primary - "
-"Record the primary monitor of the current user session. * extend - Create a "
-"new virtual monitor and use it for the remote desktop session. The "
+"virtual monitor during a session with the Display Update Virtual Channel "
+"Extension ([MS-RDPEDISP]). Allowed screenshare modes include: * mirror-"
+"primary - Record the primary monitor of the current user session. * extend - "
+"Create a new virtual monitor and use it for the remote desktop session. The "
"resolution of this virtual monitor is derived from the monitor "
"configuration, submitted by the remote desktop client."
msgstr ""
@@ -175,7 +180,7 @@
"primary - Registra il monitor principale della sessione utente corrente. * "
"extend - Crea un nuovo monitor virtuale e lo utilizza per la sessione di "
"computer remoto. La risoluzione di questo monitor virtuale deriva dalla "
-"configurazione del monitor, inviata dal client."
+"configurazione del monitor, inviata dal client del computer remoto."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Path to the certificate file"
@@ -215,7 +220,7 @@
msgstr "Indica se il motore VNC è abilitato o meno"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:68
-msgid "If set to to 'true' the VNC backend will be initialized."
+msgid "If set to 'true' the VNC backend will be initialized."
msgstr "Se impostato a VERO, il motore VNC verrà inizializzato."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:75
@@ -244,3 +249,35 @@
"una persona che possa accedere fisicamente alla postazione per poter "
"approvare esplicitamente le nuove richieste; * con password - richiedendo al "
"client remoto di fornire una password prestabilita."
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:95
+msgid "Screenshare mode of VNC connections"
+msgstr "Modalità di condivisione dello schermo delle connessioni VNC"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:96
+msgid ""
+"The screenshare mode specifies, whether the VNC backend mirrors the primary "
+"screen, or whether a virtual monitor is created. For the initial resolution "
+"of the virtual monitor, the VNC backend uses a default size of 1920x1080 "
+"pixels. When using a remote desktop session with a virtual monitor, clients "
+"can resize the resolution of the virtual monitor during a session with the "
+"setDesktopSize PDU. Allowed screenshare modes include: * mirror-primary - "
+"Record the primary monitor of the current user session. * extend - Create a "
+"new virtual monitor and use it for the remote desktop session. The initial "
+"monitor resolution of this virtual monitor is set to 1920x1080 pixels. "
+"Clients can override the initial resolution with subsequent monitor "
+"configuration updates."
+msgstr ""
+"La modalità di condivisione dello schermo specifica se il motore VNC "
+"rispecchia lo schermo principale o se viene creato uno monitor virtuale. Per "
+"la risoluzione iniziale del monitor virtuale, il motore VNC utilizza una "
+"dimensione predefinita di 1920x1080 pixel. Quando si utilizza una sessione "
+"di computer remoto con un monitor virtuale, i client possono ridimensionare "
+"la risoluzione del monitor virtuale durante una sessione tramite "
+"setDesktopSize PDU. Le modalità di condivisione dello schermo consentite "
+"includono: * mirror-primary - Registra il monitor principale della sessione "
+"utente corrente. * extend - Crea un nuovo monitor virtuale e lo utilizza per "
+"la sessione di computer remoto. La risoluzione iniziale di questo monitor "
+"virtuale è impostata su 1920x1080 pixel. I client possono sovrascrivere la "
+"risoluzione iniziale con successivi aggiornamenti della configurazione del "
+"monitor."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gnome-remote-desktop-44.1/src/grd-rdp-pipewire-stream.c
new/gnome-remote-desktop-44.2/src/grd-rdp-pipewire-stream.c
--- old/gnome-remote-desktop-44.1/src/grd-rdp-pipewire-stream.c 2023-04-22
17:45:46.000000000 +0200
+++ new/gnome-remote-desktop-44.2/src/grd-rdp-pipewire-stream.c 2023-05-27
22:18:25.000000000 +0200
@@ -57,6 +57,12 @@
gboolean success,
gpointer user_data);
+typedef struct
+{
+ GMutex buffer_mutex;
+ gboolean is_locked;
+} BufferContext;
+
struct _GrdRdpFrame
{
gatomicrefcount refcount;
@@ -134,6 +140,8 @@
struct pw_stream *pipewire_stream;
struct spa_hook pipewire_stream_listener;
+ GHashTable *pipewire_buffers;
+
uint32_t src_node_id;
struct spa_video_info_raw spa_format;
@@ -146,6 +154,57 @@
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GrdRdpFrame, grd_rdp_frame_unref)
+static BufferContext *
+buffer_context_new (void)
+{
+ BufferContext *buffer_context;
+
+ buffer_context = g_new0 (BufferContext, 1);
+ g_mutex_init (&buffer_context->buffer_mutex);
+
+ return buffer_context;
+}
+
+static void
+buffer_context_free (BufferContext *buffer_context)
+{
+ g_mutex_clear (&buffer_context->buffer_mutex);
+
+ g_free (buffer_context);
+}
+
+static void
+acquire_pipewire_buffer_lock (GrdRdpPipeWireStream *stream,
+ struct pw_buffer *buffer)
+{
+ BufferContext *buffer_context = NULL;
+
+ if (!g_hash_table_lookup_extended (stream->pipewire_buffers, buffer,
+ NULL, (gpointer *) &buffer_context))
+ g_assert_not_reached ();
+
+ g_mutex_lock (&buffer_context->buffer_mutex);
+ g_assert (!buffer_context->is_locked);
+ buffer_context->is_locked = TRUE;
+}
+
+static void
+maybe_release_pipewire_buffer_lock (GrdRdpPipeWireStream *stream,
+ struct pw_buffer *buffer)
+{
+ BufferContext *buffer_context = NULL;
+
+ if (!g_hash_table_lookup_extended (stream->pipewire_buffers, buffer,
+ NULL, (gpointer *) &buffer_context))
+ g_assert_not_reached ();
+
+ if (!buffer_context->is_locked)
+ return;
+
+ buffer_context->is_locked = FALSE;
+ g_mutex_unlock (&buffer_context->buffer_mutex);
+}
+
static GrdRdpFrame *
grd_rdp_frame_new (GrdRdpPipeWireStream *stream,
GrdRdpFrameReadyCallback callback,
@@ -447,6 +506,33 @@
}
static void
+on_stream_add_buffer (void *user_data,
+ struct pw_buffer *buffer)
+{
+ GrdRdpPipeWireStream *stream = user_data;
+
+ g_hash_table_insert (stream->pipewire_buffers, buffer, buffer_context_new
());
+}
+
+static void
+on_stream_remove_buffer (void *user_data,
+ struct pw_buffer *buffer)
+{
+ GrdRdpPipeWireStream *stream = user_data;
+ BufferContext *buffer_context = NULL;
+
+ if (!g_hash_table_lookup_extended (stream->pipewire_buffers, buffer,
+ NULL, (gpointer *) &buffer_context))
+ g_assert_not_reached ();
+
+ /* Ensure buffer is not locked any more */
+ g_mutex_lock (&buffer_context->buffer_mutex);
+ g_mutex_unlock (&buffer_context->buffer_mutex);
+
+ g_hash_table_remove (stream->pipewire_buffers, buffer);
+}
+
+static void
process_mouse_pointer_bitmap (GrdRdpPipeWireStream *stream,
struct spa_buffer *buffer)
{
@@ -532,6 +618,7 @@
g_source_set_ready_time (stream->frame_render_source, 0);
out:
pw_stream_queue_buffer (stream->pipewire_stream, buffer);
+ maybe_release_pipewire_buffer_lock (stream, buffer);
g_clear_pointer (&frame, grd_rdp_frame_unref);
}
@@ -730,6 +817,7 @@
realize_buffer_data = g_new0 (RealizeBufferData, 1);
realize_buffer_data->rdp_buffer = rdp_buffer;
+ acquire_pipewire_buffer_lock (stream, pw_buffer);
grd_egl_thread_upload (egl_thread,
stream->egl_slot,
pbo,
@@ -809,6 +897,7 @@
import_buffer_data->rdp_buffer = rdp_buffer;
}
+ acquire_pipewire_buffer_lock (stream, pw_buffer);
grd_egl_thread_download (egl_thread,
stream->egl_slot,
grd_rdp_buffer_get_pbo (rdp_buffer),
@@ -905,6 +994,8 @@
PW_VERSION_STREAM_EVENTS,
.state_changed = on_stream_state_changed,
.param_changed = on_stream_param_changed,
+ .add_buffer = on_stream_add_buffer,
+ .remove_buffer = on_stream_remove_buffer,
.process = on_stream_process,
};
@@ -1200,6 +1291,8 @@
g_mutex_clear (&stream->frame_mutex);
g_mutex_clear (&stream->dequeue_mutex);
+ g_clear_pointer (&stream->pipewire_buffers, g_hash_table_unref);
+
pw_deinit ();
if (egl_thread)
@@ -1211,6 +1304,10 @@
static void
grd_rdp_pipewire_stream_init (GrdRdpPipeWireStream *stream)
{
+ stream->pipewire_buffers =
+ g_hash_table_new_full (NULL, NULL,
+ NULL, (GDestroyNotify) buffer_context_free);
+
g_mutex_init (&stream->dequeue_mutex);
g_mutex_init (&stream->frame_mutex);
g_mutex_init (&stream->pointer_mutex);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gnome-remote-desktop-44.1/src/grd-vnc-pipewire-stream.c
new/gnome-remote-desktop-44.2/src/grd-vnc-pipewire-stream.c
--- old/gnome-remote-desktop-44.1/src/grd-vnc-pipewire-stream.c 2023-04-22
17:45:46.000000000 +0200
+++ new/gnome-remote-desktop-44.2/src/grd-vnc-pipewire-stream.c 2023-05-27
22:18:25.000000000 +0200
@@ -50,6 +50,12 @@
gboolean success,
gpointer user_data);
+typedef struct
+{
+ GMutex buffer_mutex;
+ gboolean is_locked;
+} BufferContext;
+
struct _GrdVncFrame
{
gatomicrefcount refcount;
@@ -96,6 +102,8 @@
struct pw_stream *pipewire_stream;
struct spa_hook pipewire_stream_listener;
+ GHashTable *pipewire_buffers;
+
uint32_t src_node_id;
struct spa_video_info_raw spa_format;
@@ -108,6 +116,57 @@
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GrdVncFrame, grd_vnc_frame_unref)
+static BufferContext *
+buffer_context_new (void)
+{
+ BufferContext *buffer_context;
+
+ buffer_context = g_new0 (BufferContext, 1);
+ g_mutex_init (&buffer_context->buffer_mutex);
+
+ return buffer_context;
+}
+
+static void
+buffer_context_free (BufferContext *buffer_context)
+{
+ g_mutex_clear (&buffer_context->buffer_mutex);
+
+ g_free (buffer_context);
+}
+
+static void
+acquire_pipewire_buffer_lock (GrdVncPipeWireStream *stream,
+ struct pw_buffer *buffer)
+{
+ BufferContext *buffer_context = NULL;
+
+ if (!g_hash_table_lookup_extended (stream->pipewire_buffers, buffer,
+ NULL, (gpointer *) &buffer_context))
+ g_assert_not_reached ();
+
+ g_mutex_lock (&buffer_context->buffer_mutex);
+ g_assert (!buffer_context->is_locked);
+ buffer_context->is_locked = TRUE;
+}
+
+static void
+maybe_release_pipewire_buffer_lock (GrdVncPipeWireStream *stream,
+ struct pw_buffer *buffer)
+{
+ BufferContext *buffer_context = NULL;
+
+ if (!g_hash_table_lookup_extended (stream->pipewire_buffers, buffer,
+ NULL, (gpointer *) &buffer_context))
+ g_assert_not_reached ();
+
+ if (!buffer_context->is_locked)
+ return;
+
+ buffer_context->is_locked = FALSE;
+ g_mutex_unlock (&buffer_context->buffer_mutex);
+}
+
static void
vnc_pointer_free (VncPointer *vnc_pointer)
{
@@ -226,6 +285,33 @@
params, G_N_ELEMENTS (params));
}
+static void
+on_stream_add_buffer (void *user_data,
+ struct pw_buffer *buffer)
+{
+ GrdVncPipeWireStream *stream = user_data;
+
+ g_hash_table_insert (stream->pipewire_buffers, buffer, buffer_context_new
());
+}
+
+static void
+on_stream_remove_buffer (void *user_data,
+ struct pw_buffer *buffer)
+{
+ GrdVncPipeWireStream *stream = user_data;
+ BufferContext *buffer_context = NULL;
+
+ if (!g_hash_table_lookup_extended (stream->pipewire_buffers, buffer,
+ NULL, (gpointer *) &buffer_context))
+ g_assert_not_reached ();
+
+ /* Ensure buffer is not locked any more */
+ g_mutex_lock (&buffer_context->buffer_mutex);
+ g_mutex_unlock (&buffer_context->buffer_mutex);
+
+ g_hash_table_remove (stream->pipewire_buffers, buffer);
+}
+
static GrdVncFrame *
grd_vnc_frame_new (GrdVncPipeWireStream *stream,
GrdVncFrameReadyCallback callback,
@@ -400,6 +486,7 @@
g_source_set_ready_time (stream->pending_frame_source, 0);
out:
pw_stream_queue_buffer (stream->pipewire_stream, buffer);
+ maybe_release_pipewire_buffer_lock (stream, buffer);
g_clear_pointer (&frame, grd_vnc_frame_unref);
}
@@ -522,8 +609,9 @@
modifiers[i] = stream->spa_format.modifier;
}
dst_data = g_malloc0 (height * dst_stride);
-
frame->data = dst_data;
+
+ acquire_pipewire_buffer_lock (stream, pw_buffer);
grd_egl_thread_download (egl_thread,
stream->egl_slot,
0, 0, 0,
@@ -676,6 +764,8 @@
PW_VERSION_STREAM_EVENTS,
.state_changed = on_stream_state_changed,
.param_changed = on_stream_param_changed,
+ .add_buffer = on_stream_add_buffer,
+ .remove_buffer = on_stream_remove_buffer,
.process = on_stream_process,
};
@@ -972,6 +1062,8 @@
g_mutex_clear (&stream->frame_mutex);
g_mutex_clear (&stream->dequeue_mutex);
+ g_clear_pointer (&stream->pipewire_buffers, g_hash_table_unref);
+
pw_deinit ();
if (egl_thread)
@@ -983,6 +1075,10 @@
static void
grd_vnc_pipewire_stream_init (GrdVncPipeWireStream *stream)
{
+ stream->pipewire_buffers =
+ g_hash_table_new_full (NULL, NULL,
+ NULL, (GDestroyNotify) buffer_context_free);
+
g_mutex_init (&stream->dequeue_mutex);
g_mutex_init (&stream->frame_mutex);
g_mutex_init (&stream->pointer_mutex);
++++++ gnome-remote-desktop.obsinfo ++++++
--- /var/tmp/diff_new_pack.5SKhc1/_old 2023-05-29 22:48:13.102446444 +0200
+++ /var/tmp/diff_new_pack.5SKhc1/_new 2023-05-29 22:48:13.106446467 +0200
@@ -1,5 +1,5 @@
name: gnome-remote-desktop
-version: 44.1
-mtime: 1682178346
-commit: 66e0fa21c87f82d7aaf71846dc408fb832d43146
+version: 44.2
+mtime: 1685218705
+commit: 9d1ee9c9458636dbe4d3326dceec81dfefef56dd