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 2021-11-05 22:58:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-remote-desktop (Old)
and /work/SRC/openSUSE:Factory/.gnome-remote-desktop.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-remote-desktop"
Fri Nov 5 22:58:41 2021 rev:6 rq:929586 version:41.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/gnome-remote-desktop/gnome-remote-desktop.changes
2021-09-29 20:20:00.199083209 +0200
+++
/work/SRC/openSUSE:Factory/.gnome-remote-desktop.new.1890/gnome-remote-desktop.changes
2021-11-05 22:58:59.784295619 +0100
@@ -1,0 +2,18 @@
+Sat Oct 30 14:40:59 UTC 2021 - [email protected]
+
+- Update to version 41.1:
+ + vnc-pipewire-stream: Take frame data from pending frame, when
+ needed
+ + rdp-pipewire-stream: Take frame data from pending frame, when
+ needed
+ + rdp/rdpgfx: Unref surface serial after looking up surface
+ context
+ + rdp-graphics-pipeline: Fix small style issue
+ + rdp-fuse-clipboard:
+ - Fix potential race when accessing FuseFile path
+ - Fix small style issue
+ + clipboard-rdp: Always check return value of ConvertFromUnicode
+ + session-rdp: Only signal GCond, when all encode jobs are
+ complete
+
+-------------------------------------------------------------------
Old:
----
gnome-remote-desktop-41.0.obscpio
New:
----
_servicedata
gnome-remote-desktop-41.1.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-remote-desktop.spec ++++++
--- /var/tmp/diff_new_pack.if4jY2/_old 2021-11-05 22:59:00.400295998 +0100
+++ /var/tmp/diff_new_pack.if4jY2/_new 2021-11-05 22:59:00.404296000 +0100
@@ -21,7 +21,7 @@
%define freerdp_version 2.2.0
Name: gnome-remote-desktop
-Version: 41.0
+Version: 41.1
Release: 0
Summary: GNOME Remote Desktop screen sharing service
License: GPL-2.0-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.if4jY2/_old 2021-11-05 22:59:00.428296015 +0100
+++ /var/tmp/diff_new_pack.if4jY2/_new 2021-11-05 22:59:00.432296018 +0100
@@ -2,7 +2,7 @@
<service name="obs_scm" mode="disabled">
<param
name="url">https://gitlab.gnome.org/GNOME/gnome-remote-desktop.git</param>
<param name="scm">git</param>
- <param name="revision">refs/tags/41.0</param>
+ <param name="revision">refs/tags/41.1</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param>
</service>
++++++ _servicedata ++++++
<servicedata>
<service name="tar_scm">
<param
name="url">https://gitlab.gnome.org/GNOME/gnome-remote-desktop.git</param>
<param
name="changesrevision">f895c2b28b3341af54cb2ce24ce76af8f3e1513d</param></service></servicedata>++++++
gnome-remote-desktop-41.0.obscpio -> gnome-remote-desktop-41.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/meson.build
new/gnome-remote-desktop-41.1/meson.build
--- old/gnome-remote-desktop-41.0/meson.build 2021-09-19 16:03:51.000000000
+0200
+++ new/gnome-remote-desktop-41.1/meson.build 2021-10-30 16:37:19.000000000
+0200
@@ -1,5 +1,5 @@
project('gnome-remote-desktop', 'c',
- version: '41.0',
+ version: '41.1',
meson_version: '>= 0.47.0',
default_options: ['warning_level=1',
'buildtype=debugoptimized'])
@@ -19,7 +19,7 @@
gio_dep = dependency('gio-2.0')
gio_unix_dep = dependency('gio-unix-2.0')
pipewire_dep = dependency('libpipewire-0.3', version: '>= 0.3.0')
-systemd_dep = dependency('systemd')
+systemd_dep = dependency('systemd', required: get_option('systemd'))
libsecret_dep = dependency('libsecret-1')
libnotify_dep = dependency('libnotify')
@@ -80,12 +80,14 @@
configinc = include_directories('.')
servicedir = get_option('systemd_user_unit_dir')
-if servicedir == ''
- servicedir = systemd_dep.get_pkgconfig_variable('systemduserunitdir')
-endif
+if systemd_dep.found()
+ if servicedir == ''
+ servicedir = systemd_dep.get_pkgconfig_variable('systemduserunitdir')
+ endif
-if servicedir == ''
- error('Couldn\'t determine systemd user unit service directory')
+ if servicedir == ''
+ error('Couldn\'t determine systemd user unit service directory')
+ endif
endif
top_srcdir = meson.current_source_dir()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/meson_options.txt
new/gnome-remote-desktop-41.1/meson_options.txt
--- old/gnome-remote-desktop-41.0/meson_options.txt 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/meson_options.txt 2021-10-30
16:37:19.000000000 +0200
@@ -13,6 +13,11 @@
value: true,
description: 'Build with support for hardware acceleration using NVENC
and CUDA')
+option('systemd',
+ type: 'boolean',
+ value: true,
+ description: 'Enable systemd support')
+
option('systemd_user_unit_dir',
type: 'string',
value: '',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/po/LINGUAS
new/gnome-remote-desktop-41.1/po/LINGUAS
--- old/gnome-remote-desktop-41.0/po/LINGUAS 2021-09-19 16:03:51.000000000
+0200
+++ new/gnome-remote-desktop-41.1/po/LINGUAS 2021-10-30 16:37:19.000000000
+0200
@@ -1,5 +1,6 @@
# please keep this list sorted alphabetically
#
+bg
ca
cs
de
@@ -28,6 +29,7 @@
ru
sk
sl
+sr
sv
tr
uk
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/po/bg.po
new/gnome-remote-desktop-41.1/po/bg.po
--- old/gnome-remote-desktop-41.0/po/bg.po 1970-01-01 01:00:00.000000000
+0100
+++ new/gnome-remote-desktop-41.1/po/bg.po 2021-10-30 16:37:19.000000000
+0200
@@ -0,0 +1,102 @@
+# Bulgarian translation of gnome-remote-desktop po-file.
+# Copyright (C) 2021 Alexander Shopov.
+# This file is distributed under the same license as the gnome-remote-desktop
package.
+# Alexander Shopov <[email protected]>, 2012, 2015, 2016, 2017.
+#
+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: 2021-10-03 17:07+0000\n"
+"PO-Revision-Date: 2021-10-04 09:59+0200\n"
+"Last-Translator: Alexander Shopov <[email protected]>\n"
+"Language-Team: Bulgarian <[email protected]>\n"
+"Language: bg\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"
+
+#: src/grd-daemon.c:365
+msgid "GNOME Remote Desktop"
+msgstr "???????????????????? ?????????????? ?????????? ???? GNOME"
+
+#: src/grd-prompt.c:124
+#, c-format
+msgid "Do you want to share your desktop?"
+msgstr "???????????? ???? ???? ?????????????????? ??????????????????
???????????"
+
+#: src/grd-prompt.c:125
+#, c-format
+msgid ""
+"A user on the computer '%s' is trying to remotely view or control your "
+"desktop."
+msgstr ""
+"???????????????????? ???? ?????????????????? ???%s??? ???? ???????????? ????
?????????????????? ???????????????????? ?????????????????? ???? "
+"??????????."
+
+#: src/grd-prompt.c:131
+msgid "Refuse"
+msgstr "??????????????????"
+
+#: src/grd-prompt.c:136
+msgid "Accept"
+msgstr "????????????????"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
+msgid "Path to the certificate file"
+msgstr "?????? ?????? ?????????? ?????? ????????????????????"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
+msgid ""
+"In order to be able to use RDP with TLS Security, both the private key file "
+"and the certificate file need to be provided to the RDP server."
+msgstr ""
+"???? ???? ???????????????? RDP ?????? ???????????? TLS, ???????????? ????
???????????????????????? ???? ?????????????? ???? RDP "
+"?????????? ?????????????? ????????, ???????? ?? ??????????????????????."
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
+msgid "Path to the private key file"
+msgstr "?????? ?????? ?????????? ?? ?????????????? ????????"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
+msgid "Only allow remote connections to view the screen content"
+msgstr ""
+"?????????????????????? ???????? ???? ???????????????????????? ????????????
???? ???????????? ???????????????????????? ???? ????????????"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
+msgid ""
+"When view-only is true, remote RDP connections cannot manipulate input "
+"devices (e.g. mouse and keyboard)."
+msgstr ""
+"???????????? ?? ????????????????, ???????????????????????? ???????????? ????
RDP ???? ???????????????????? ???????????????? "
+"???????????????????? (???????? ?????????? ?? ????????????????????)."
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
+msgid ""
+"When view-only is true, remote VNC connections cannot manipulate input "
+"devices (e.g. mouse and keyboard)."
+msgstr ""
+"???????????? ?? ????????????????, ???????????????????????? ???????????? ????
VNC ???? ???????????????????? ???????????????? "
+"???????????????????? (???????? ?????????? ?? ????????????????????)."
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
+msgid "Method used to authenticate VNC connections"
+msgstr "?????????? ???? ?????????????????????????? ???? ???????????????? ????
VNC"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
+msgid ""
+"The VNC authentication method describes how a remote connection is "
+"authenticated. It can currently be done in two different ways: * prompt - by "
+"prompting the user for each new connection, requiring a person with physical "
+"access to the workstation to explicitly approve the new connection. * "
+"password - by requiring the remote client to provide a known password"
+msgstr ""
+"?????????????? ???? ?????????????????????????? ???? VNC ???????????? ??????
???? ???? ???? ?????????????? ?????? ???????????????????????? "
+"???? ????????????. ?? ?????????????? ?????? ?????? ????????????: ???
???????????? ??? ???????????????????????? ???????? ?????????????? "
+"?????????? ?????? ?????????? ???????? ????????????, ??????????
?????????????????? ?????????? ?? ?????????????????? ???????????? ???? "
+"???????????????? ???? ???????????? ????????????????; ??? ???????????? ???
???????????????????????? ???????????????????? ???????????? ???? ???? "
+"???????????????????????? ???????? ??????????????????????????
?????????????????? ????????????"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/po/ca.po
new/gnome-remote-desktop-41.1/po/ca.po
--- old/gnome-remote-desktop-41.0/po/ca.po 2021-09-19 16:03:51.000000000
+0200
+++ new/gnome-remote-desktop-41.1/po/ca.po 2021-10-30 16:37:19.000000000
+0200
@@ -62,7 +62,7 @@
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr ""
-"Permet nom??s a les connexions remotes per veure el contingut de la pantalla"
+"Permet nom??s a les connexions remotes per a veure el contingut de la
pantalla"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
@@ -92,7 +92,7 @@
"access to the workstation to explicitly approve the new connection. * "
"password - by requiring the remote client to provide a known password"
msgstr ""
-"El m??tode d'autenticaci?? VNC descriu com s'ha autentica una connexi??
remota. "
+"El m??tode d'autenticaci?? VNC descriu com s'autentica una connexi?? remota. "
"Actualment, es pot fer de dues maneres diferents: * ??prompt?? - demanant a "
"l'usuari per a cada nova connexi??, requerint a una persona amb acc??s f??sic
a "
"l'estaci?? de treball que aprovi expl??citament la nova connexi??. *
??password?? "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/po/he.po
new/gnome-remote-desktop-41.1/po/he.po
--- old/gnome-remote-desktop-41.0/po/he.po 2021-09-19 16:03:51.000000000
+0200
+++ new/gnome-remote-desktop-41.1/po/he.po 2021-10-30 16:37:19.000000000
+0200
@@ -8,8 +8,9 @@
"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: 2021-06-18 11:30+0000\n"
-"PO-Revision-Date: 2021-06-21 20:33+0300\n"
+"POT-Creation-Date: 2021-06-24 07:32+0000\n"
+"PO-Revision-Date: 2021-09-28 23:34+0300\n"
+"Last-Translator: Yaron Shahrabani <[email protected]>\n"
"Language-Team: Hebrew <[email protected]>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
@@ -17,7 +18,6 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? "
"2 : 3);\n"
-"Last-Translator: Yaron Shahrabani <[email protected]>\n"
"X-Generator: Poedit 3.0\n"
#: src/grd-daemon.c:351
@@ -51,7 +51,7 @@
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
msgid ""
-"In Order to be able to use RDP with TLS Security, both the private key file "
+"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
"?????? ?????????? ?????????? ????RDP ???? ?????????? TLS, ???? ????????
???????? ????RDP ???? ???? ???????? ?????????? "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/po/oc.po
new/gnome-remote-desktop-41.1/po/oc.po
--- old/gnome-remote-desktop-41.0/po/oc.po 2021-09-19 16:03:51.000000000
+0200
+++ new/gnome-remote-desktop-41.1/po/oc.po 2021-10-30 16:37:19.000000000
+0200
@@ -8,14 +8,14 @@
"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: 2021-07-16 05:29+0000\n"
-"PO-Revision-Date: 2021-07-22 19:48+0200\n"
+"POT-Creation-Date: 2021-07-22 17:48+0000\n"
+"PO-Revision-Date: 2021-10-03 19:06+0200\n"
+"Last-Translator: Quentin PAG??S\n"
"Language-Team: Occitan <[email protected]>\n"
"Language: oc\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Last-Translator: Quentin PAG??S\n"
"X-Generator: Poedit 3.0\n"
#: src/grd-daemon.c:351
@@ -54,6 +54,8 @@
"In order to be able to use RDP with TLS Security, both the private key file "
"and the certificate file need to be provided to the RDP server."
msgstr ""
+"Per poder utilizar RDP amb la seguretat TLS, tan lo fichi??r de la clau "
+"privada que lo fichi??r de certificat devon ??sser fornits al servidor RDP."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
msgid "Path to the private key file"
@@ -63,18 +65,23 @@
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
msgid "Only allow remote connections to view the screen content"
msgstr ""
+"Sonque autorizar las connexions distantas per veire lo contengut de l???ecran"
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
msgid ""
"When view-only is true, remote RDP connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
+"Se view-only es definit a ??true??, las connexion distantas RDP p??don pas "
+"manipular las entradas dels aparelhs (ex la mirga e lo clavi??r)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
msgid ""
"When view-only is true, remote VNC connections cannot manipulate input "
"devices (e.g. mouse and keyboard)."
msgstr ""
+"Se view-only es definit a ??true??, las connexion distantas VNC p??don pas "
+"manipular las entradas dels aparelhs (ex la mirga e lo clavi??r)."
#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
msgid "Method used to authenticate VNC connections"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/po/sr.po
new/gnome-remote-desktop-41.1/po/sr.po
--- old/gnome-remote-desktop-41.0/po/sr.po 1970-01-01 01:00:00.000000000
+0100
+++ new/gnome-remote-desktop-41.1/po/sr.po 2021-10-30 16:37:19.000000000
+0200
@@ -0,0 +1,103 @@
+# Serbian translation for gnome-remote-desktop.
+# Copyright (C) 2021 gnome-remote-desktop's COPYRIGHT HOLDER
+# This file is distributed under the same license as the gnome-remote-desktop
package.
+# ?????????? ???????????? <[email protected]>, 2021.
+#
+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: 2021-09-28 20:35+0000\n"
+"PO-Revision-Date: 2021-10-02 09:29+0200\n"
+"Language-Team: Serbian <[email protected]>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"Last-Translator: ?????????? ??. ???????????? <[email protected]>\n"
+"X-Generator: Poedit 3.0\n"
+
+#: src/grd-daemon.c:365
+msgid "GNOME Remote Desktop"
+msgstr "?????????????? ?????????????? ??????????"
+
+#: src/grd-prompt.c:124
+#, c-format
+msgid "Do you want to share your desktop?"
+msgstr "???? ???? ???????????? ???????????????? ?????????????? ??????????
?????????????"
+
+#: src/grd-prompt.c:125
+#, c-format
+msgid ""
+"A user on the computer '%s' is trying to remotely view or control your "
+"desktop."
+msgstr ""
+"???????????????? ???? ???????????????? ???%s??? ???????? ???? ??????????????
???????????????? ?? ?????????????? ?????????? ???????????? "
+"??????????????????."
+
+#: src/grd-prompt.c:131
+msgid "Refuse"
+msgstr "??????????"
+
+#: src/grd-prompt.c:136
+msgid "Accept"
+msgstr "????????????????"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:7
+msgid "Path to the certificate file"
+msgstr "???????????? ???? ???????????????? ??????????????????????"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:8
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:16
+msgid ""
+"In order to be able to use RDP with TLS Security, both the private key file "
+"and the certificate file need to be provided to the RDP server."
+msgstr ""
+"???? ?????????? ?????????????????? ?????? ???? ?????? ??????????????????????,
???????????? ???????? ???????????????? ?????????????????? "
+"?????????? ?? ???????????????? ?????????????????????? ?????? ??????????????."
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:15
+msgid "Path to the private key file"
+msgstr "???????????? ???? ???????????????? ?????????????????? ??????????"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:23
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:33
+msgid "Only allow remote connections to view the screen content"
+msgstr "???????? ?????????????? ???????????????? ????????????
???????????????????? ???????????????? ????????????"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:24
+msgid ""
+"When view-only is true, remote RDP connections cannot manipulate input "
+"devices (e.g. mouse and keyboard)."
+msgstr ""
+"???????? ???? ???????? ?????????????? ??????????????????, ??????????????
?????? ???????? ???? ???????? ?????????????????? ???????????? "
+"?????????????? (??????.: ???????? ?? ??????????????????)."
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:34
+msgid ""
+"When view-only is true, remote VNC connections cannot manipulate input "
+"devices (e.g. mouse and keyboard)."
+msgstr ""
+"???????? ???? ???????? ?????????????? ??????????????????, ??????????????
?????? ???????? ???? ???????? ?????????????????? ???????????? "
+"?????????????? (??????.: ???????? ?? ??????????????????)."
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:41
+msgid "Method used to authenticate VNC connections"
+msgstr "?????????? ?????????????? ???????????????????? ?????? ????????"
+
+#: src/org.gnome.desktop.remote-desktop.gschema.xml.in:42
+msgid ""
+"The VNC authentication method describes how a remote connection is "
+"authenticated. It can currently be done in two different ways: * prompt - by "
+"prompting the user for each new connection, requiring a person with physical "
+"access to the workstation to explicitly approve the new connection. * "
+"password - by requiring the remote client to provide a known password"
+msgstr ""
+"?????????? ?????????????? ???????????????????? ?????? ???????? ??????????????
???????? ???? ?????????????? ???????? "
+"??????????????????????????. ???????????????? ???? ???? ????????
?????????????? ???? ?????? ????????????: * prompt - ???????? "
+"?????????????????? ???? ?????????? ???????? ????????, ??????????????
?????????? ???? ???????????????? ?????????????????? ???????????? "
+"?????????????? ???? ???? ???? ?????????? ???????? ????????
?????????????????????? ????????????????. * password - ?????????????? "
+"???? ???????????????? ???????????????? ???? ?????????????? ??????????????????
??????????????"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/src/grd-clipboard-rdp.c
new/gnome-remote-desktop-41.1/src/grd-clipboard-rdp.c
--- old/gnome-remote-desktop-41.0/src/grd-clipboard-rdp.c 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-clipboard-rdp.c 2021-10-30
16:37:19.000000000 +0200
@@ -565,7 +565,7 @@
FILEDESCRIPTORW *files = NULL;
FILEDESCRIPTORW *file;
uint32_t n_files = 0;
- char *clip_data_dir_name;
+ g_autofree char *clip_data_dir_name = NULL;
char *filename = NULL;
char *escaped_name;
char *file_uri;
@@ -576,6 +576,7 @@
g_strdup_printf ("%u", clip_data_id) :
g_strdup_printf ("%lu", GRD_RDP_FUSE_CLIPBOARD_NO_CLIP_DATA_ID);
+ *dst_size = 0;
dst_data = g_array_new (TRUE, TRUE, sizeof (char));
cliprdr_parse_file_list (src_data, src_size, &files, &n_files);
@@ -583,8 +584,13 @@
{
file = &files[i];
- ConvertFromUnicode (CP_UTF8, 0, file->cFileName, -1, &filename, 0, NULL,
- NULL);
+ if (ConvertFromUnicode (CP_UTF8, 0, file->cFileName, -1, &filename,
+ 0, NULL, NULL) <= 0)
+ {
+ g_array_free (dst_data, TRUE);
+ g_free (files);
+ return NULL;
+ }
if (strchr (filename, '\\'))
{
g_free (filename);
@@ -607,7 +613,6 @@
*dst_size = dst_data->len;
g_free (files);
- g_free (clip_data_dir_name);
return (uint8_t *) g_array_free (dst_data, FALSE);
}
@@ -699,7 +704,7 @@
FILEDESCRIPTORW *file;
uint32_t n_files = 0;
gboolean result;
- char *clip_data_dir_name;
+ g_autofree char *clip_data_dir_name = NULL;
char *filename = NULL;
char *escaped_name;
char *full_filepath;
@@ -742,8 +747,15 @@
{
file = &files[i];
- ConvertFromUnicode (CP_UTF8, 0, file->cFileName, -1, &filename,
- 0, NULL, NULL);
+ if (ConvertFromUnicode (CP_UTF8, 0, file->cFileName, -1, &filename,
+ 0, NULL, NULL) <= 0)
+ {
+ g_array_free (data_nautilus, TRUE);
+ grd_rdp_fuse_clipboard_clear_no_cdi_selection
(rdp_fuse_clipboard);
+ g_free (files);
+ g_free (dst_data);
+ return NULL;
+ }
if (strchr (filename, '\\'))
{
g_free (filename);
@@ -798,7 +810,6 @@
GUINT_TO_POINTER (second_mime_type),
format_data);
- g_free (clip_data_dir_name);
g_free (files);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/src/grd-daemon.c
new/gnome-remote-desktop-41.1/src/grd-daemon.c
--- old/gnome-remote-desktop-41.0/src/grd-daemon.c 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-daemon.c 2021-10-30
16:37:19.000000000 +0200
@@ -68,18 +68,19 @@
}
#ifdef HAVE_RDP
-static void
+static gboolean
init_rdp_server (GrdDaemon *daemon)
{
GrdSettings *settings = grd_context_get_settings (daemon->context);
g_autoptr (GError) error = NULL;
+ gboolean result = FALSE;
daemon->rdp_server = NULL;
if (!g_access (grd_settings_get_rdp_server_cert (settings), F_OK) &&
!g_access (grd_settings_get_rdp_server_key (settings), F_OK))
{
daemon->rdp_server = grd_rdp_server_new (daemon->context);
- if (!grd_rdp_server_start (daemon->rdp_server, &error))
+ if (!(result = grd_rdp_server_start (daemon->rdp_server, &error)))
g_warning ("Failed to initialize RDP server: %s\n", error->message);
else
g_message ("Initialized RDP server");
@@ -88,36 +89,49 @@
{
g_message ("Didn't initialize RDP server: not configured");
}
+
+ return result;
}
#endif /* HAVE_RDP */
#ifdef HAVE_VNC
-static void
+static gboolean
init_vnc_server (GrdDaemon *daemon)
{
g_autoptr (GError) error = NULL;
+ gboolean result;
daemon->vnc_server = grd_vnc_server_new (daemon->context);
- if (!grd_vnc_server_start (daemon->vnc_server, &error))
+ if (!(result = grd_vnc_server_start (daemon->vnc_server, &error)))
g_warning ("Failed to initialize VNC server: %s\n", error->message);
else
g_message ("Initialized VNC server");
+
+ return result;
}
#endif /* HAVE_VNC */
static void
maybe_enable_services (GrdDaemon *daemon)
{
+ gboolean has_one_backend = FALSE;
+
if (!is_daemon_ready (daemon))
return;
#ifdef HAVE_RDP
- init_rdp_server (daemon);
+ has_one_backend = init_rdp_server (daemon) || has_one_backend;
#endif
#ifdef HAVE_VNC
- init_vnc_server (daemon);
+ has_one_backend = init_vnc_server (daemon) || has_one_backend;
#endif
+
+ if (!has_one_backend)
+ {
+ g_warning ("No backend initialized successfully. Exiting");
+ g_application_release (G_APPLICATION (daemon));
+ }
}
static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/src/grd-rdp-event-queue.c
new/gnome-remote-desktop-41.1/src/grd-rdp-event-queue.c
--- old/gnome-remote-desktop-41.0/src/grd-rdp-event-queue.c 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-rdp-event-queue.c 2021-10-30
16:37:19.000000000 +0200
@@ -356,7 +356,7 @@
flush_source = g_source_new (&flush_source_funcs, sizeof (GSource));
g_source_set_callback (flush_source, flush_rdp_events, rdp_event_queue,
NULL);
g_source_set_ready_time (flush_source, -1);
- g_source_attach (flush_source, g_main_context_get_thread_default ());
+ g_source_attach (flush_source, NULL);
rdp_event_queue->flush_source = flush_source;
return rdp_event_queue;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gnome-remote-desktop-41.0/src/grd-rdp-fuse-clipboard.c
new/gnome-remote-desktop-41.1/src/grd-rdp-fuse-clipboard.c
--- old/gnome-remote-desktop-41.0/src/grd-rdp-fuse-clipboard.c 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-rdp-fuse-clipboard.c 2021-10-30
16:37:19.000000000 +0200
@@ -1083,6 +1083,7 @@
{
GrdRdpFuseClipboard *rdp_fuse_clipboard = fuse_req_userdata (fuse_req);
FuseFile *fuse_file;
+ g_autofree char *filename_with_root = NULL;
g_mutex_lock (&rdp_fuse_clipboard->filesystem_mutex);
if (!(fuse_file = get_fuse_file_by_ino (rdp_fuse_clipboard, fuse_ino)))
@@ -1097,6 +1098,8 @@
fuse_reply_err (fuse_req, EISDIR);
return;
}
+
+ filename_with_root = g_strdup (fuse_file->filename_with_root);
g_mutex_unlock (&rdp_fuse_clipboard->filesystem_mutex);
if ((file_info->flags & O_ACCMODE) != O_RDONLY)
@@ -1108,7 +1111,7 @@
/* Using direct_io also increases FUSE_MAX_PAGES_PER_REQ */
file_info->direct_io = 1;
- g_debug ("[FUSE Clipboard] Opening file \"%s\"",
fuse_file->filename_with_root);
+ g_debug ("[FUSE Clipboard] Opening file \"%s\"", filename_with_root);
fuse_reply_open (fuse_req, file_info);
}
@@ -1157,6 +1160,7 @@
{
GrdRdpFuseClipboard *rdp_fuse_clipboard = fuse_req_userdata (fuse_req);
FuseFile *fuse_file;
+ g_autofree char *filename_with_root = NULL;
g_mutex_lock (&rdp_fuse_clipboard->filesystem_mutex);
if (!(fuse_file = get_fuse_file_by_ino (rdp_fuse_clipboard, fuse_ino)))
@@ -1171,6 +1175,8 @@
fuse_reply_err (fuse_req, ENOTDIR);
return;
}
+
+ filename_with_root = g_strdup (fuse_file->filename_with_root);
g_mutex_unlock (&rdp_fuse_clipboard->filesystem_mutex);
if ((file_info->flags & O_ACCMODE) != O_RDONLY)
@@ -1179,8 +1185,7 @@
return;
}
- g_debug ("[FUSE Clipboard] Opening directory \"%s\"",
- fuse_file->filename_with_root);
+ g_debug ("[FUSE Clipboard] Opening directory \"%s\"", filename_with_root);
fuse_reply_open (fuse_req, file_info);
}
@@ -1377,8 +1382,10 @@
GrdRdpFuseClipboard *rdp_fuse_clipboard = GRD_RDP_FUSE_CLIPBOARD (object);
if (rdp_fuse_clipboard->timeout_reset_source)
- g_source_destroy (rdp_fuse_clipboard->timeout_reset_source);
- g_clear_pointer (&rdp_fuse_clipboard->timeout_reset_source, g_source_unref);
+ {
+ g_source_destroy (rdp_fuse_clipboard->timeout_reset_source);
+ g_clear_pointer (&rdp_fuse_clipboard->timeout_reset_source,
g_source_unref);
+ }
if (rdp_fuse_clipboard->fuse_thread)
{
@@ -1533,7 +1540,7 @@
g_source_set_callback (timeout_reset_source, reset_clip_data_entry_timeouts,
rdp_fuse_clipboard, NULL);
g_source_set_ready_time (timeout_reset_source, -1);
- g_source_attach (timeout_reset_source, g_main_context_get_thread_default ());
+ g_source_attach (timeout_reset_source, NULL);
rdp_fuse_clipboard->timeout_reset_source = timeout_reset_source;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/src/grd-rdp-gfx-surface.c
new/gnome-remote-desktop-41.1/src/grd-rdp-gfx-surface.c
--- old/gnome-remote-desktop-41.0/src/grd-rdp-gfx-surface.c 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-rdp-gfx-surface.c 2021-10-30
16:37:19.000000000 +0200
@@ -331,6 +331,7 @@
GrdRdpGfxSurface *
grd_rdp_gfx_surface_new (GrdRdpGraphicsPipeline *graphics_pipeline,
GrdSessionRdp *session_rdp,
+ GMainContext *pipeline_context,
GrdRdpSurface *rdp_surface,
uint16_t surface_id,
uint32_t serial)
@@ -356,7 +357,7 @@
g_source_set_callback (gfx_surface->pending_encode_source,
maybe_encode_pending_frame, gfx_surface, NULL);
g_source_set_ready_time (gfx_surface->pending_encode_source, -1);
- g_source_attach (gfx_surface->pending_encode_source, NULL);
+ g_source_attach (gfx_surface->pending_encode_source, pipeline_context);
return gfx_surface;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/src/grd-rdp-gfx-surface.h
new/gnome-remote-desktop-41.1/src/grd-rdp-gfx-surface.h
--- old/gnome-remote-desktop-41.0/src/grd-rdp-gfx-surface.h 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-rdp-gfx-surface.h 2021-10-30
16:37:19.000000000 +0200
@@ -31,6 +31,7 @@
GrdRdpGfxSurface *grd_rdp_gfx_surface_new (GrdRdpGraphicsPipeline
*graphics_pipeline,
GrdSessionRdp *session_rdp,
+ GMainContext
*pipeline_context,
GrdRdpSurface *rdp_surface,
uint16_t surface_id,
uint32_t serial);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gnome-remote-desktop-41.0/src/grd-rdp-graphics-pipeline.c
new/gnome-remote-desktop-41.1/src/grd-rdp-graphics-pipeline.c
--- old/gnome-remote-desktop-41.0/src/grd-rdp-graphics-pipeline.c
2021-09-19 16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-rdp-graphics-pipeline.c
2021-10-30 16:37:19.000000000 +0200
@@ -26,11 +26,12 @@
#include "grd-rdp-frame-info.h"
#include "grd-rdp-gfx-surface.h"
#include "grd-rdp-network-autodetection.h"
+#include "grd-rdp-surface.h"
+#include "grd-session-rdp.h"
+
#ifdef HAVE_NVENC
#include "grd-rdp-nvenc.h"
#endif /* HAVE_NVENC */
-#include "grd-rdp-surface.h"
-#include "grd-session-rdp.h"
#define ENC_TIMES_CHECK_INTERVAL_MS 1000
#define MAX_TRACKED_ENC_FRAMES 1000
@@ -71,6 +72,7 @@
uint32_t initial_version;
GrdSessionRdp *session_rdp;
+ GMainContext *pipeline_context;
GrdRdpNetworkAutodetection *network_autodetection;
wStream *encode_stream;
RFX_CONTEXT *rfx_context;
@@ -879,7 +881,8 @@
g_timeout_source_new (ENC_TIMES_CHECK_INTERVAL_MS);
g_source_set_callback (graphics_pipeline->rtt_pause_source,
maybe_slow_down_rtts,
graphics_pipeline, NULL);
- g_source_attach (graphics_pipeline->rtt_pause_source, NULL);
+ g_source_attach (graphics_pipeline->rtt_pause_source,
+ graphics_pipeline->pipeline_context);
}
void
@@ -910,8 +913,8 @@
if (!rdp_surface->gfx_surface)
{
rdp_surface->gfx_surface = grd_rdp_gfx_surface_new (
- graphics_pipeline, session_rdp, rdp_surface,
- get_next_free_surface_id (graphics_pipeline),
+ graphics_pipeline, session_rdp, graphics_pipeline->pipeline_context,
+ rdp_surface, get_next_free_surface_id (graphics_pipeline),
get_next_free_serial (graphics_pipeline));
map_surface_to_output (graphics_pipeline, rdp_surface->gfx_surface);
}
@@ -1133,8 +1136,6 @@
uint32_t surface_serial;
surface_serial = GPOINTER_TO_UINT (value);
- surface_serial_unref (graphics_pipeline, surface_serial);
-
if (!g_hash_table_lookup_extended
(graphics_pipeline->serial_surface_table,
GUINT_TO_POINTER (surface_serial),
NULL, (gpointer *) &surface_context))
@@ -1146,6 +1147,8 @@
frame_acknowledge->frameId,
g_get_monotonic_time ());
}
+
+ surface_serial_unref (graphics_pipeline, surface_serial);
}
if (frame_acknowledge->queueDepth == SUSPEND_FRAME_ACKNOWLEDGEMENT)
@@ -1203,6 +1206,7 @@
GrdRdpGraphicsPipeline *
grd_rdp_graphics_pipeline_new (GrdSessionRdp *session_rdp,
+ GMainContext *pipeline_context,
HANDLE vcm,
HANDLE stop_event,
rdpContext *rdp_context,
@@ -1221,6 +1225,7 @@
graphics_pipeline->rdpgfx_context = rdpgfx_context;
graphics_pipeline->stop_event = stop_event;
graphics_pipeline->session_rdp = session_rdp;
+ graphics_pipeline->pipeline_context = pipeline_context;
graphics_pipeline->network_autodetection = network_autodetection;
graphics_pipeline->encode_stream = encode_stream;
graphics_pipeline->rfx_context = rfx_context;
@@ -1504,7 +1509,7 @@
g_source_set_callback (protocol_reset_source, reset_protocol,
graphics_pipeline, NULL);
g_source_set_ready_time (protocol_reset_source, -1);
- g_source_attach (protocol_reset_source, NULL);
+ g_source_attach (protocol_reset_source, graphics_pipeline->pipeline_context);
graphics_pipeline->protocol_reset_source = protocol_reset_source;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gnome-remote-desktop-41.0/src/grd-rdp-graphics-pipeline.h
new/gnome-remote-desktop-41.1/src/grd-rdp-graphics-pipeline.h
--- old/gnome-remote-desktop-41.0/src/grd-rdp-graphics-pipeline.h
2021-09-19 16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-rdp-graphics-pipeline.h
2021-10-30 16:37:19.000000000 +0200
@@ -31,6 +31,7 @@
GRD, RDP_GRAPHICS_PIPELINE, GObject);
GrdRdpGraphicsPipeline *grd_rdp_graphics_pipeline_new (GrdSessionRdp
*session_rdp,
+ GMainContext
*pipeline_context,
HANDLE
vcm,
HANDLE
stop_event,
rdpContext
*rdp_context,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/src/grd-rdp-nvenc.c
new/gnome-remote-desktop-41.1/src/grd-rdp-nvenc.c
--- old/gnome-remote-desktop-41.0/src/grd-rdp-nvenc.c 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-rdp-nvenc.c 2021-10-30
16:37:19.000000000 +0200
@@ -55,6 +55,21 @@
G_DEFINE_TYPE (GrdRdpNvenc, grd_rdp_nvenc, G_TYPE_OBJECT);
+void
+grd_rdp_nvenc_push_cuda_context (GrdRdpNvenc *rdp_nvenc)
+{
+ if (rdp_nvenc->cuda_funcs->cuCtxPushCurrent (rdp_nvenc->cu_context) !=
CUDA_SUCCESS)
+ g_error ("[HWAccel.CUDA] Failed to push CUDA context");
+}
+
+void
+grd_rdp_nvenc_pop_cuda_context (GrdRdpNvenc *rdp_nvenc)
+{
+ CUcontext cu_context;
+
+ rdp_nvenc->cuda_funcs->cuCtxPopCurrent (&cu_context);
+}
+
static uint32_t
get_next_free_encode_session_id (GrdRdpNvenc *rdp_nvenc)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/src/grd-rdp-nvenc.h
new/gnome-remote-desktop-41.1/src/grd-rdp-nvenc.h
--- old/gnome-remote-desktop-41.0/src/grd-rdp-nvenc.h 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-rdp-nvenc.h 2021-10-30
16:37:19.000000000 +0200
@@ -29,6 +29,10 @@
GrdRdpNvenc *grd_rdp_nvenc_new (void);
+void grd_rdp_nvenc_push_cuda_context (GrdRdpNvenc *rdp_nvenc);
+
+void grd_rdp_nvenc_pop_cuda_context (GrdRdpNvenc *rdp_nvenc);
+
gboolean grd_rdp_nvenc_create_encode_session (GrdRdpNvenc *rdp_nvenc,
uint32_t *encode_session_id,
uint16_t surface_width,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gnome-remote-desktop-41.0/src/grd-rdp-pipewire-stream.c
new/gnome-remote-desktop-41.1/src/grd-rdp-pipewire-stream.c
--- old/gnome-remote-desktop-41.0/src/grd-rdp-pipewire-stream.c 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-rdp-pipewire-stream.c 2021-10-30
16:37:19.000000000 +0200
@@ -47,6 +47,7 @@
uint16_t width;
uint16_t height;
+ gboolean has_pointer_data;
uint8_t *pointer_bitmap;
uint16_t pointer_hotspot_x;
uint16_t pointer_hotspot_y;
@@ -67,6 +68,7 @@
struct spa_hook pipewire_core_listener;
+ GSource *render_source;
GMutex frame_mutex;
GrdRdpFrame *pending_frame;
@@ -82,6 +84,69 @@
G_TYPE_OBJECT)
static gboolean
+do_render (gpointer user_data)
+{
+ GrdRdpPipeWireStream *stream = GRD_RDP_PIPEWIRE_STREAM (user_data);
+ GrdRdpFrame *frame;
+
+ g_mutex_lock (&stream->frame_mutex);
+ frame = g_steal_pointer (&stream->pending_frame);
+ g_mutex_unlock (&stream->frame_mutex);
+
+ if (!frame)
+ return G_SOURCE_CONTINUE;
+
+ if (frame->data)
+ {
+ grd_session_rdp_take_buffer (stream->session_rdp, frame->data,
+ frame->width, frame->height);
+ }
+
+ if (frame->pointer_bitmap)
+ {
+ grd_session_rdp_update_pointer (stream->session_rdp,
+ frame->pointer_hotspot_x,
+ frame->pointer_hotspot_y,
+ frame->pointer_width,
+ frame->pointer_height,
+ frame->pointer_bitmap);
+ }
+ else if (frame->pointer_is_hidden)
+ {
+ grd_session_rdp_hide_pointer (stream->session_rdp);
+ }
+
+ g_free (frame);
+
+ return G_SOURCE_CONTINUE;
+}
+
+static gboolean
+render_source_dispatch (GSource *source,
+ GSourceFunc callback,
+ gpointer user_data)
+{
+ g_source_set_ready_time (source, -1);
+
+ return callback (user_data);
+}
+
+static GSourceFuncs render_source_funcs =
+{
+ .dispatch = render_source_dispatch,
+};
+
+static void
+create_render_source (GrdRdpPipeWireStream *stream,
+ GMainContext *render_context)
+{
+ stream->render_source = g_source_new (&render_source_funcs, sizeof
(GSource));
+ g_source_set_callback (stream->render_source, do_render, stream, NULL);
+ g_source_set_ready_time (stream->render_source, -1);
+ g_source_attach (stream->render_source, render_context);
+}
+
+static gboolean
pipewire_loop_source_prepare (GSource *base,
int *timeout)
{
@@ -177,8 +242,6 @@
GrdRdpPipeWireStream *stream = GRD_RDP_PIPEWIRE_STREAM (user_data);
uint8_t params_buffer[1024];
struct spa_pod_builder pod_builder;
- int width;
- int height;
const struct spa_pod *params[3];
if (!format || id != SPA_PARAM_Format)
@@ -188,11 +251,6 @@
pod_builder = SPA_POD_BUILDER_INIT (params_buffer, sizeof (params_buffer));
- width = stream->spa_format.size.width;
- height = stream->spa_format.size.height;
-
- grd_session_rdp_resize_framebuffer (stream->session_rdp, width, height);
-
params[0] = spa_pod_builder_add_object (
&pod_builder,
SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
@@ -219,49 +277,6 @@
params, G_N_ELEMENTS (params));
}
-static int
-do_render (struct spa_loop *loop,
- bool async,
- uint32_t seq,
- const void *data,
- size_t size,
- void *user_data)
-{
- GrdRdpPipeWireStream *stream = GRD_RDP_PIPEWIRE_STREAM (user_data);
- GrdRdpFrame *frame;
-
- g_mutex_lock (&stream->frame_mutex);
- frame = g_steal_pointer (&stream->pending_frame);
- g_mutex_unlock (&stream->frame_mutex);
-
- if (!frame)
- return 0;
-
- if (frame->data)
- {
- grd_session_rdp_take_buffer (stream->session_rdp, frame->data,
- frame->width, frame->height);
- }
-
- if (frame->pointer_bitmap)
- {
- grd_session_rdp_update_pointer (stream->session_rdp,
- frame->pointer_hotspot_x,
- frame->pointer_hotspot_y,
- frame->pointer_width,
- frame->pointer_height,
- frame->pointer_bitmap);
- }
- else if (frame->pointer_is_hidden)
- {
- grd_session_rdp_hide_pointer (stream->session_rdp);
- }
-
- g_free (frame);
-
- return 0;
-}
-
static GrdRdpFrame *
process_buffer (GrdRdpPipeWireStream *stream,
struct spa_buffer *buffer)
@@ -379,10 +394,12 @@
frame->pointer_hotspot_y = spa_meta_cursor->hotspot.y;
frame->pointer_width = spa_meta_bitmap->size.width;
frame->pointer_height = spa_meta_bitmap->size.height;
+ frame->has_pointer_data = TRUE;
}
else if (spa_meta_bitmap)
{
frame->pointer_is_hidden = TRUE;
+ frame->has_pointer_data = TRUE;
}
}
@@ -390,11 +407,33 @@
}
static void
+take_frame_data_from (GrdRdpFrame *src_frame,
+ GrdRdpFrame *dst_frame)
+{
+ dst_frame->data = g_steal_pointer (&src_frame->data);
+ dst_frame->width = src_frame->width;
+ dst_frame->height = src_frame->height;
+}
+
+static void
+take_pointer_data_from (GrdRdpFrame *src_frame,
+ GrdRdpFrame *dst_frame)
+{
+ g_assert (!dst_frame->pointer_bitmap);
+ dst_frame->pointer_bitmap = g_steal_pointer (&src_frame->pointer_bitmap);
+
+ dst_frame->pointer_hotspot_x = src_frame->pointer_hotspot_x;
+ dst_frame->pointer_hotspot_y = src_frame->pointer_hotspot_y;
+ dst_frame->pointer_width = src_frame->pointer_width;
+ dst_frame->pointer_height = src_frame->pointer_height;
+ dst_frame->pointer_is_hidden = src_frame->pointer_is_hidden;
+ dst_frame->has_pointer_data = TRUE;
+}
+
+static void
on_stream_process (void *user_data)
{
GrdRdpPipeWireStream *stream = GRD_RDP_PIPEWIRE_STREAM (user_data);
- GrdPipeWireSource *pipewire_source =
- (GrdPipeWireSource *) stream->pipewire_source;
struct pw_buffer *next_buffer;
struct pw_buffer *buffer = NULL;
GrdRdpFrame *frame;
@@ -417,6 +456,11 @@
g_mutex_lock (&stream->frame_mutex);
if (stream->pending_frame)
{
+ if (!frame->data && stream->pending_frame->data)
+ take_frame_data_from (stream->pending_frame, frame);
+ if (!frame->has_pointer_data && stream->pending_frame->has_pointer_data)
+ take_pointer_data_from (stream->pending_frame, frame);
+
g_free (stream->pending_frame->data);
g_free (stream->pending_frame->pointer_bitmap);
g_clear_pointer (&stream->pending_frame, g_free);
@@ -426,9 +470,7 @@
pw_stream_queue_buffer (stream->pipewire_stream, buffer);
- pw_loop_invoke (pipewire_source->pipewire_loop, do_render,
- SPA_ID_INVALID, NULL, 0,
- false, stream);
+ g_source_set_ready_time (stream->render_source, 0);
}
static const struct pw_stream_events stream_events = {
@@ -523,6 +565,7 @@
GrdRdpPipeWireStream *
grd_rdp_pipewire_stream_new (GrdSessionRdp *session_rdp,
+ GMainContext *render_context,
uint32_t src_node_id,
uint32_t refresh_rate,
GError **error)
@@ -536,6 +579,8 @@
stream->session_rdp = session_rdp;
stream->src_node_id = src_node_id;
+ create_render_source (stream, render_context);
+
pipewire_source = create_pipewire_source ();
if (!pipewire_source)
{
@@ -593,6 +638,19 @@
g_clear_pointer (&stream->pipewire_source, g_source_unref);
}
+ if (stream->render_source)
+ {
+ g_source_destroy (stream->render_source);
+ g_clear_pointer (&stream->render_source, g_source_unref);
+ }
+
+ if (stream->pending_frame)
+ {
+ g_free (stream->pending_frame->data);
+ g_free (stream->pending_frame->pointer_bitmap);
+ g_clear_pointer (&stream->pending_frame, g_free);
+ }
+
G_OBJECT_CLASS (grd_rdp_pipewire_stream_parent_class)->finalize (object);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gnome-remote-desktop-41.0/src/grd-rdp-pipewire-stream.h
new/gnome-remote-desktop-41.1/src/grd-rdp-pipewire-stream.h
--- old/gnome-remote-desktop-41.0/src/grd-rdp-pipewire-stream.h 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-rdp-pipewire-stream.h 2021-10-30
16:37:19.000000000 +0200
@@ -31,6 +31,7 @@
GObject)
GrdRdpPipeWireStream *grd_rdp_pipewire_stream_new (GrdSessionRdp *session_rdp,
+ GMainContext
*render_context,
uint32_t src_node_id,
uint32_t
refresh_rate,
GError **error);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/src/grd-session-rdp.c
new/gnome-remote-desktop-41.1/src/grd-session-rdp.c
--- old/gnome-remote-desktop-41.0/src/grd-session-rdp.c 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-session-rdp.c 2021-10-30
16:37:19.000000000 +0200
@@ -42,6 +42,10 @@
#include "grd-settings.h"
#include "grd-stream.h"
+#ifdef HAVE_NVENC
+#include "grd-rdp-nvenc.h"
+#endif /* HAVE_NVENC */
+
#define DISCRETE_SCROLL_STEP 10.0
typedef enum _RdpPeerFlag
@@ -124,6 +128,9 @@
HANDLE start_event;
HANDLE stop_event;
+ GThread *graphics_thread;
+ GMainContext *graphics_context;
+
GrdRdpSurface *rdp_surface;
Pointer *last_pointer;
GHashTable *pointer_cache;
@@ -143,10 +150,11 @@
#ifdef HAVE_NVENC
GrdRdpNvenc *rdp_nvenc;
-#endif /*HAVE_NVENC*/
+#endif /* HAVE_NVENC */
GSource *pending_encode_source;
+ GMutex close_session_mutex;
unsigned int close_session_idle_id;
GrdRdpPipeWireStream *pipewire_stream;
@@ -214,10 +222,10 @@
g_source_set_ready_time (session_rdp->pending_encode_source, 0);
}
-void
-grd_session_rdp_resize_framebuffer (GrdSessionRdp *session_rdp,
- uint32_t width,
- uint32_t height)
+static void
+maybe_resize_graphics_output_buffer (GrdSessionRdp *session_rdp,
+ uint32_t width,
+ uint32_t height)
{
freerdp_peer *peer = session_rdp->peer;
rdpSettings *rdp_settings = peer->settings;
@@ -247,6 +255,7 @@
cairo_region_t *region;
g_clear_pointer (&rdp_surface->pending_frame, g_free);
+ maybe_resize_graphics_output_buffer (session_rdp, width, height);
if (is_rdp_peer_flag_set (session_rdp, RDP_PEER_ALL_SURFACES_INVALID))
{
@@ -564,11 +573,16 @@
static void
maybe_queue_close_session_idle (GrdSessionRdp *session_rdp)
{
+ g_mutex_lock (&session_rdp->close_session_mutex);
if (session_rdp->close_session_idle_id)
- return;
+ {
+ g_mutex_unlock (&session_rdp->close_session_mutex);
+ return;
+ }
session_rdp->close_session_idle_id =
g_idle_add (close_session_idle, session_rdp);
+ g_mutex_unlock (&session_rdp->close_session_mutex);
SetEvent (session_rdp->stop_event);
}
@@ -788,7 +802,9 @@
g_mutex_lock (thread_pool_context->pending_jobs_mutex);
--thread_pool_context->pending_job_count;
- g_cond_signal (thread_pool_context->pending_jobs_cond);
+
+ if (!thread_pool_context->pending_job_count)
+ g_cond_signal (thread_pool_context->pending_jobs_cond);
g_mutex_unlock (thread_pool_context->pending_jobs_mutex);
}
@@ -962,7 +978,9 @@
g_mutex_lock (thread_pool_context->pending_jobs_mutex);
--thread_pool_context->pending_job_count;
- g_cond_signal (thread_pool_context->pending_jobs_cond);
+
+ if (!thread_pool_context->pending_job_count)
+ g_cond_signal (thread_pool_context->pending_jobs_cond);
g_mutex_unlock (thread_pool_context->pending_jobs_mutex);
}
@@ -1603,7 +1621,8 @@
rdp_settings->PointerCacheSize = MIN (rdp_settings->PointerCacheSize, 100);
session_rdp->rdp_surface = g_malloc0 (sizeof (GrdRdpSurface));
- session_rdp->rdp_surface->refresh_rate = 30;
+ session_rdp->rdp_surface->refresh_rate =
rdp_settings->SupportGraphicsPipeline ? 60
+
: 30;
if (rdp_settings->SupportGraphicsPipeline &&
!rdp_settings->NetworkAutoDetect)
@@ -1625,6 +1644,7 @@
rdp_peer_context->graphics_pipeline =
grd_rdp_graphics_pipeline_new (session_rdp,
+ session_rdp->graphics_context,
rdp_peer_context->vcm,
session_rdp->stop_event,
peer->context,
@@ -1899,6 +1919,27 @@
return NULL;
}
+static gpointer
+graphics_thread_func (gpointer data)
+{
+ GrdSessionRdp *session_rdp = data;
+
+#ifdef HAVE_NVENC
+ if (session_rdp->rdp_nvenc)
+ grd_rdp_nvenc_push_cuda_context (session_rdp->rdp_nvenc);
+#endif /* HAVE_NVENC */
+
+ while (WaitForSingleObject (session_rdp->stop_event, 0) == WAIT_TIMEOUT)
+ g_main_context_iteration (session_rdp->graphics_context, TRUE);
+
+#ifdef HAVE_NVENC
+ if (session_rdp->rdp_nvenc)
+ grd_rdp_nvenc_pop_cuda_context (session_rdp->rdp_nvenc);
+#endif /* HAVE_NVENC */
+
+ return NULL;
+}
+
GrdSessionRdp *
grd_session_rdp_new (GrdRdpServer *rdp_server,
GSocketConnection *connection,
@@ -1938,24 +1979,13 @@
#ifdef HAVE_NVENC
session_rdp->rdp_nvenc = rdp_nvenc;
#endif /* HAVE_NVENC */
- session_rdp->start_event = CreateEvent (NULL, TRUE, FALSE, NULL);
- session_rdp->stop_event = CreateEvent (NULL, TRUE, FALSE, NULL);
session_rdp->socket_thread = g_thread_new ("RDP socket thread",
socket_thread_func,
session_rdp);
- if (!session_rdp->socket_thread)
- {
- g_warning ("Failed to create socket thread");
-
- g_clear_pointer (&session_rdp->stop_event, CloseHandle);
- g_clear_pointer (&session_rdp->start_event, CloseHandle);
- g_object_unref (connection);
- g_free (password);
- g_free (username);
-
- return NULL;
- }
+ session_rdp->graphics_thread = g_thread_new ("RDP graphics thread",
+ graphics_thread_func,
+ session_rdp);
init_rdp_session (session_rdp, username, password);
@@ -2006,6 +2036,15 @@
rdp_peer_context->network_autodetection);
}
+ if (session_rdp->graphics_thread)
+ {
+ g_assert (session_rdp->graphics_context);
+ g_assert (WaitForSingleObject (session_rdp->stop_event, 0) !=
WAIT_TIMEOUT);
+
+ g_main_context_wakeup (session_rdp->graphics_context);
+ g_clear_pointer (&session_rdp->graphics_thread, g_thread_join);
+ }
+
g_clear_object (&session_rdp->pipewire_stream);
g_clear_object (&rdp_peer_context->clipboard_rdp);
@@ -2042,9 +2081,6 @@
clear_pointer_bitmap,
NULL);
- g_clear_pointer (&session_rdp->stop_event, CloseHandle);
- g_clear_pointer (&session_rdp->start_event, CloseHandle);
-
g_clear_handle_id (&session_rdp->close_session_idle_id, g_source_remove);
}
@@ -2086,6 +2122,7 @@
GrdStream *stream)
{
GrdSessionRdp *session_rdp = GRD_SESSION_RDP (session);
+ GMainContext *graphics_context = session_rdp->graphics_context;
uint32_t pipewire_node_id;
uint16_t refresh_rate;
g_autoptr (GError) error = NULL;
@@ -2093,6 +2130,7 @@
pipewire_node_id = grd_stream_get_pipewire_node_id (stream);
refresh_rate = session_rdp->rdp_surface->refresh_rate;
session_rdp->pipewire_stream = grd_rdp_pipewire_stream_new (session_rdp,
+ graphics_context,
pipewire_node_id,
refresh_rate,
&error);
@@ -2138,10 +2176,16 @@
g_clear_pointer (&session_rdp->pending_encode_source, g_source_unref);
}
+ g_assert (!session_rdp->graphics_thread);
+ g_clear_pointer (&session_rdp->graphics_context, g_main_context_unref);
+
g_clear_pointer (&session_rdp->pressed_unicode_keys, g_hash_table_unref);
g_clear_pointer (&session_rdp->pressed_keys, g_hash_table_unref);
g_clear_pointer (&session_rdp->pointer_cache, g_hash_table_unref);
+ g_clear_pointer (&session_rdp->stop_event, CloseHandle);
+ g_clear_pointer (&session_rdp->start_event, CloseHandle);
+
G_OBJECT_CLASS (grd_session_rdp_parent_class)->dispose (object);
}
@@ -2201,6 +2245,9 @@
static void
grd_session_rdp_init (GrdSessionRdp *session_rdp)
{
+ session_rdp->start_event = CreateEvent (NULL, TRUE, FALSE, NULL);
+ session_rdp->stop_event = CreateEvent (NULL, TRUE, FALSE, NULL);
+
session_rdp->pointer_cache = g_hash_table_new (NULL,
are_pointer_bitmaps_equal);
session_rdp->pressed_keys = g_hash_table_new (NULL, NULL);
session_rdp->pressed_unicode_keys = g_hash_table_new (NULL, NULL);
@@ -2208,15 +2255,19 @@
g_cond_init (&session_rdp->pending_jobs_cond);
g_mutex_init (&session_rdp->pending_jobs_mutex);
g_mutex_init (&session_rdp->rdp_flags_mutex);
+ g_mutex_init (&session_rdp->close_session_mutex);
session_rdp->rdp_event_queue = grd_rdp_event_queue_new (session_rdp);
+ session_rdp->graphics_context = g_main_context_new ();
+
session_rdp->pending_encode_source = g_source_new
(&pending_encode_source_funcs,
sizeof (GSource));
g_source_set_callback (session_rdp->pending_encode_source,
encode_pending_frames, session_rdp, NULL);
g_source_set_ready_time (session_rdp->pending_encode_source, -1);
- g_source_attach (session_rdp->pending_encode_source, NULL);
+ g_source_attach (session_rdp->pending_encode_source,
+ session_rdp->graphics_context);
}
static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gnome-remote-desktop-41.0/src/grd-session-rdp.h
new/gnome-remote-desktop-41.1/src/grd-session-rdp.h
--- old/gnome-remote-desktop-41.0/src/grd-session-rdp.h 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-session-rdp.h 2021-10-30
16:37:19.000000000 +0200
@@ -49,10 +49,6 @@
int grd_session_rdp_get_stride_for_width (GrdSessionRdp *session_rdp,
int width);
-void grd_session_rdp_resize_framebuffer (GrdSessionRdp *session_rdp,
- uint32_t width,
- uint32_t height);
-
void grd_session_rdp_take_buffer (GrdSessionRdp *session_rdp,
void *data,
uint16_t width,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gnome-remote-desktop-41.0/src/grd-vnc-pipewire-stream.c
new/gnome-remote-desktop-41.1/src/grd-vnc-pipewire-stream.c
--- old/gnome-remote-desktop-41.0/src/grd-vnc-pipewire-stream.c 2021-09-19
16:03:51.000000000 +0200
+++ new/gnome-remote-desktop-41.1/src/grd-vnc-pipewire-stream.c 2021-10-30
16:37:19.000000000 +0200
@@ -427,6 +427,17 @@
g_mutex_lock (&stream->frame_mutex);
if (stream->pending_frame)
{
+ if (!frame->data && stream->pending_frame->data)
+ frame->data = g_steal_pointer (&stream->pending_frame->data);
+ if (!frame->rfb_cursor && stream->pending_frame->rfb_cursor)
+ frame->rfb_cursor = g_steal_pointer
(&stream->pending_frame->rfb_cursor);
+ if (!frame->cursor_moved && stream->pending_frame->cursor_moved)
+ {
+ frame->cursor_x = stream->pending_frame->cursor_x;
+ frame->cursor_y = stream->pending_frame->cursor_y;
+ frame->cursor_moved = TRUE;
+ }
+
g_free (stream->pending_frame->data);
g_clear_pointer (&stream->pending_frame, g_free);
}
++++++ gnome-remote-desktop.obsinfo ++++++
--- /var/tmp/diff_new_pack.if4jY2/_old 2021-11-05 22:59:00.592296116 +0100
+++ /var/tmp/diff_new_pack.if4jY2/_new 2021-11-05 22:59:00.592296116 +0100
@@ -1,5 +1,5 @@
name: gnome-remote-desktop
-version: 41.0
-mtime: 1632060231
-commit: 240489f399df798228128c4c2cf29afba1208481
+version: 41.1
+mtime: 1635604639
+commit: f895c2b28b3341af54cb2ce24ce76af8f3e1513d