import CS git gnome-remote-desktop-49.3-3.el10_2
This commit is contained in:
parent
ffc78ae67d
commit
8932d4bcb9
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
gnome-remote-desktop-47.3.tar.xz
|
||||
gnome-remote-desktop-49.3.tar.xz
|
||||
|
||||
210
0001-Patch-out-multi-touch-support.patch
Normal file
210
0001-Patch-out-multi-touch-support.patch
Normal file
@ -0,0 +1,210 @@
|
||||
From 26114b9ce739f748db1fd1379a977f55815346bf Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 12 Nov 2025 16:53:36 +0100
|
||||
Subject: [PATCH] Patch out multi touch support
|
||||
|
||||
This is needed to allow building on older FreeRDP.
|
||||
---
|
||||
meson.build | 2 +-
|
||||
src/grd-rdp-dvc.c | 2 ++
|
||||
src/grd-rdp-private.h | 2 ++
|
||||
src/grd-session-rdp.c | 14 ++++++++++++++
|
||||
src/grd-session-rdp.h | 2 ++
|
||||
src/grd-session.c | 2 ++
|
||||
src/grd-settings.c | 1 +
|
||||
src/grd-types.h | 2 ++
|
||||
src/meson.build | 4 ++--
|
||||
9 files changed, 28 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 5dcb77c3..041b771b 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -6,7 +6,7 @@ project('gnome-remote-desktop', 'c',
|
||||
|
||||
cuda_req = '>= 11.1.5.0'
|
||||
epoxy_req = '>= 1.4'
|
||||
-freerdp_req = '>= 3.15.0'
|
||||
+freerdp_req = '>= 3.10.0'
|
||||
fuse_req = '>= 3.9.1'
|
||||
polkit_req = '>= 122'
|
||||
vulkan_req = '>= 1.2.0'
|
||||
diff --git a/src/grd-rdp-dvc.c b/src/grd-rdp-dvc.c
|
||||
index 65ec1554..4c2210b8 100644
|
||||
--- a/src/grd-rdp-dvc.c
|
||||
+++ b/src/grd-rdp-dvc.c
|
||||
@@ -139,8 +139,10 @@ channel_to_string (GrdRdpChannel channel)
|
||||
return "DISP";
|
||||
case GRD_RDP_CHANNEL_GRAPHICS_PIPELINE:
|
||||
return "RDPGFX";
|
||||
+#if 0
|
||||
case GRD_RDP_CHANNEL_INPUT:
|
||||
return "INPUT";
|
||||
+#endif
|
||||
case GRD_RDP_CHANNEL_TELEMETRY:
|
||||
return "TELEMETRY";
|
||||
}
|
||||
diff --git a/src/grd-rdp-private.h b/src/grd-rdp-private.h
|
||||
index 29139b30..47057f1a 100644
|
||||
--- a/src/grd-rdp-private.h
|
||||
+++ b/src/grd-rdp-private.h
|
||||
@@ -46,6 +46,8 @@ typedef struct _RdpPeerContext
|
||||
GrdRdpDvcAudioPlayback *audio_playback;
|
||||
GrdRdpDvcDisplayControl *display_control;
|
||||
GrdRdpDvcGraphicsPipeline *graphics_pipeline;
|
||||
+#if 0
|
||||
GrdRdpDvcInput *input;
|
||||
+#endif
|
||||
GrdRdpDvcTelemetry *telemetry;
|
||||
} RdpPeerContext;
|
||||
diff --git a/src/grd-session-rdp.c b/src/grd-session-rdp.c
|
||||
index cc026064..6cf0c4f1 100644
|
||||
--- a/src/grd-session-rdp.c
|
||||
+++ b/src/grd-session-rdp.c
|
||||
@@ -37,7 +37,9 @@
|
||||
#include "grd-rdp-dvc-display-control.h"
|
||||
#include "grd-rdp-dvc-graphics-pipeline.h"
|
||||
#include "grd-rdp-dvc-handler.h"
|
||||
+#if 0
|
||||
#include "grd-rdp-dvc-input.h"
|
||||
+#endif
|
||||
#include "grd-rdp-dvc-telemetry.h"
|
||||
#include "grd-rdp-event-queue.h"
|
||||
#include "grd-rdp-layout-manager.h"
|
||||
@@ -453,9 +455,11 @@ grd_session_rdp_tear_down_channel (GrdSessionRdp *session_rdp,
|
||||
case GRD_RDP_CHANNEL_GRAPHICS_PIPELINE:
|
||||
g_assert_not_reached ();
|
||||
break;
|
||||
+#if 0
|
||||
case GRD_RDP_CHANNEL_INPUT:
|
||||
g_clear_object (&rdp_peer_context->input);
|
||||
break;
|
||||
+#endif
|
||||
case GRD_RDP_CHANNEL_TELEMETRY:
|
||||
g_clear_object (&rdp_peer_context->telemetry);
|
||||
break;
|
||||
@@ -1417,7 +1421,9 @@ socket_thread_func (gpointer data)
|
||||
{
|
||||
GrdRdpDvcTelemetry *telemetry;
|
||||
GrdRdpDvcGraphicsPipeline *graphics_pipeline;
|
||||
+#if 0
|
||||
GrdRdpDvcInput *input;
|
||||
+#endif
|
||||
GrdRdpDvcAudioPlayback *audio_playback;
|
||||
GrdRdpDvcDisplayControl *display_control;
|
||||
GrdRdpDvcAudioInput *audio_input;
|
||||
@@ -1435,7 +1441,9 @@ socket_thread_func (gpointer data)
|
||||
g_mutex_lock (&rdp_peer_context->channel_mutex);
|
||||
telemetry = rdp_peer_context->telemetry;
|
||||
graphics_pipeline = rdp_peer_context->graphics_pipeline;
|
||||
+#if 0
|
||||
input = rdp_peer_context->input;
|
||||
+#endif
|
||||
audio_playback = rdp_peer_context->audio_playback;
|
||||
display_control = rdp_peer_context->display_control;
|
||||
audio_input = rdp_peer_context->audio_input;
|
||||
@@ -1444,8 +1452,10 @@ socket_thread_func (gpointer data)
|
||||
grd_rdp_dvc_maybe_init (GRD_RDP_DVC (telemetry));
|
||||
if (graphics_pipeline && !session_rdp->session_should_stop)
|
||||
grd_rdp_dvc_maybe_init (GRD_RDP_DVC (graphics_pipeline));
|
||||
+#if 0
|
||||
if (input && !session_rdp->session_should_stop)
|
||||
grd_rdp_dvc_maybe_init (GRD_RDP_DVC (input));
|
||||
+#endif
|
||||
if (audio_playback && !session_rdp->session_should_stop)
|
||||
grd_rdp_dvc_maybe_init (GRD_RDP_DVC (audio_playback));
|
||||
if (display_control && !session_rdp->session_should_stop)
|
||||
@@ -1620,7 +1630,9 @@ grd_session_rdp_stop (GrdSession *session)
|
||||
g_clear_object (&rdp_peer_context->clipboard_rdp);
|
||||
g_clear_object (&rdp_peer_context->audio_playback);
|
||||
g_clear_object (&rdp_peer_context->display_control);
|
||||
+#if 0
|
||||
g_clear_object (&rdp_peer_context->input);
|
||||
+#endif
|
||||
g_clear_object (&rdp_peer_context->graphics_pipeline);
|
||||
g_clear_object (&rdp_peer_context->telemetry);
|
||||
g_mutex_unlock (&rdp_peer_context->channel_mutex);
|
||||
@@ -1705,9 +1717,11 @@ initialize_remaining_virtual_channels (GrdSessionRdp *session_rdp)
|
||||
GrdRdpDvcHandler *dvc_handler = rdp_peer_context->dvc_handler;
|
||||
HANDLE vcm = rdp_peer_context->vcm;
|
||||
|
||||
+#if 0
|
||||
rdp_peer_context->input =
|
||||
grd_rdp_dvc_input_new (session_rdp->layout_manager,
|
||||
session_rdp, dvc_handler, vcm);
|
||||
+#endif
|
||||
|
||||
if (session_rdp->screen_share_mode == GRD_RDP_SCREEN_SHARE_MODE_EXTEND)
|
||||
{
|
||||
diff --git a/src/grd-session-rdp.h b/src/grd-session-rdp.h
|
||||
index d49dd43d..a6358e65 100644
|
||||
--- a/src/grd-session-rdp.h
|
||||
+++ b/src/grd-session-rdp.h
|
||||
@@ -48,7 +48,9 @@ typedef enum _GrdRdpChannel
|
||||
GRD_RDP_CHANNEL_AUDIO_PLAYBACK,
|
||||
GRD_RDP_CHANNEL_DISPLAY_CONTROL,
|
||||
GRD_RDP_CHANNEL_GRAPHICS_PIPELINE,
|
||||
+#if 0
|
||||
GRD_RDP_CHANNEL_INPUT,
|
||||
+#endif
|
||||
GRD_RDP_CHANNEL_TELEMETRY,
|
||||
} GrdRdpChannel;
|
||||
|
||||
diff --git a/src/grd-session.c b/src/grd-session.c
|
||||
index e247d342..7ced5d98 100644
|
||||
--- a/src/grd-session.c
|
||||
+++ b/src/grd-session.c
|
||||
@@ -1440,7 +1440,9 @@ grd_ei_source_dispatch (gpointer user_data)
|
||||
EI_DEVICE_CAP_POINTER_ABSOLUTE,
|
||||
EI_DEVICE_CAP_BUTTON,
|
||||
EI_DEVICE_CAP_SCROLL,
|
||||
+#if 0
|
||||
EI_DEVICE_CAP_TOUCH,
|
||||
+#endif
|
||||
NULL);
|
||||
break;
|
||||
case EI_EVENT_SEAT_REMOVED:
|
||||
diff --git a/src/grd-settings.c b/src/grd-settings.c
|
||||
index 8393ace5..e259a574 100644
|
||||
--- a/src/grd-settings.c
|
||||
+++ b/src/grd-settings.c
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <gio/gio.h>
|
||||
|
||||
#ifdef HAVE_RDP
|
||||
+#include <winpr/winpr.h>
|
||||
#include <freerdp/freerdp.h>
|
||||
#endif
|
||||
|
||||
diff --git a/src/grd-types.h b/src/grd-types.h
|
||||
index 2b3f64f2..9ae6e8cb 100644
|
||||
--- a/src/grd-types.h
|
||||
+++ b/src/grd-types.h
|
||||
@@ -50,7 +50,9 @@ typedef struct _GrdRdpDvcAudioPlayback GrdRdpDvcAudioPlayback;
|
||||
typedef struct _GrdRdpDvcDisplayControl GrdRdpDvcDisplayControl;
|
||||
typedef struct _GrdRdpDvcGraphicsPipeline GrdRdpDvcGraphicsPipeline;
|
||||
typedef struct _GrdRdpDvcHandler GrdRdpDvcHandler;
|
||||
+#if 0
|
||||
typedef struct _GrdRdpDvcInput GrdRdpDvcInput;
|
||||
+#endif
|
||||
typedef struct _GrdRdpDvcTelemetry GrdRdpDvcTelemetry;
|
||||
typedef struct _GrdRdpEventQueue GrdRdpEventQueue;
|
||||
typedef struct _GrdRdpFrame GrdRdpFrame;
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index 1b2cb93d..ed671125 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -148,8 +148,8 @@ if have_rdp
|
||||
'grd-rdp-dvc-graphics-pipeline.h',
|
||||
'grd-rdp-dvc-handler.c',
|
||||
'grd-rdp-dvc-handler.h',
|
||||
- 'grd-rdp-dvc-input.c',
|
||||
- 'grd-rdp-dvc-input.h',
|
||||
+ #'grd-rdp-dvc-input.c',
|
||||
+ #'grd-rdp-dvc-input.h',
|
||||
'grd-rdp-dvc-telemetry.c',
|
||||
'grd-rdp-dvc-telemetry.h',
|
||||
'grd-rdp-event-queue.c',
|
||||
--
|
||||
2.51.0
|
||||
|
||||
591
0001-daemon-handover-Move-callback-definitions-earlier-in.patch
Normal file
591
0001-daemon-handover-Move-callback-definitions-earlier-in.patch
Normal file
@ -0,0 +1,591 @@
|
||||
From d102edca608d5ca210b1bcde72e7644d0709b806 Mon Sep 17 00:00:00 2001
|
||||
From: Joan Torres Lopez <joantolo@redhat.com>
|
||||
Date: Mon, 26 Jan 2026 17:39:20 +0100
|
||||
Subject: [PATCH 1/4] daemon-handover: Move callback definitions earlier in the
|
||||
file
|
||||
|
||||
Preparatory refactoring for upcoming setup/teardown handover functions.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/merge_requests/371>
|
||||
---
|
||||
src/grd-daemon-handover.c | 88 +++++++++++++++++++--------------------
|
||||
1 file changed, 44 insertions(+), 44 deletions(-)
|
||||
|
||||
diff --git a/src/grd-daemon-handover.c b/src/grd-daemon-handover.c
|
||||
index 3c9e34f..40fed79 100644
|
||||
--- a/src/grd-daemon-handover.c
|
||||
+++ b/src/grd-daemon-handover.c
|
||||
@@ -415,6 +415,50 @@ inform_about_insecure_connection (GrdDaemonHandover *daemon_handover)
|
||||
show_insecure_connection_prompt (daemon_handover);
|
||||
}
|
||||
|
||||
+static void
|
||||
+on_redirect_client (GrdDBusRemoteDesktopRdpHandover *interface,
|
||||
+ const char *routing_token,
|
||||
+ const char *username,
|
||||
+ const char *password,
|
||||
+ GrdDaemonHandover *daemon_handover)
|
||||
+{
|
||||
+ const char *object_path =
|
||||
+ g_dbus_proxy_get_object_path (G_DBUS_PROXY (interface));
|
||||
+ GrdContext *context = grd_daemon_get_context (GRD_DAEMON (daemon_handover));
|
||||
+ GrdSettings *settings = grd_context_get_settings (context);
|
||||
+ GrdSessionRdp *session_rdp = GRD_SESSION_RDP (daemon_handover->session);
|
||||
+ g_autofree char *certificate = NULL;
|
||||
+
|
||||
+ g_debug ("[DaemonHandover] At: %s, received RedirectClient signal",
|
||||
+ object_path);
|
||||
+
|
||||
+ g_object_get (G_OBJECT (settings),
|
||||
+ "rdp-server-cert", &certificate,
|
||||
+ NULL);
|
||||
+
|
||||
+ if (!grd_session_rdp_send_server_redirection (session_rdp, routing_token,
|
||||
+ username, password,
|
||||
+ certificate))
|
||||
+ grd_session_stop (daemon_handover->session);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+on_handover_is_waiting_changed (GrdDBusRemoteDesktopRdpHandover *proxy,
|
||||
+ GParamSpec *pspec,
|
||||
+ GrdDaemonHandover *daemon_handover)
|
||||
+{
|
||||
+ gboolean handover_is_waiting;
|
||||
+
|
||||
+ handover_is_waiting =
|
||||
+ grd_dbus_remote_desktop_rdp_handover_get_handover_is_waiting (
|
||||
+ daemon_handover->remote_desktop_handover);
|
||||
+
|
||||
+ if (!handover_is_waiting)
|
||||
+ return;
|
||||
+
|
||||
+ start_handover (daemon_handover);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
on_incoming_new_connection (GrdRdpServer *rdp_server,
|
||||
GrdSession *session,
|
||||
@@ -485,50 +529,6 @@ on_rdp_server_stopped (GrdDaemonHandover *daemon_handover)
|
||||
daemon_handover);
|
||||
}
|
||||
|
||||
-static void
|
||||
-on_redirect_client (GrdDBusRemoteDesktopRdpHandover *interface,
|
||||
- const char *routing_token,
|
||||
- const char *username,
|
||||
- const char *password,
|
||||
- GrdDaemonHandover *daemon_handover)
|
||||
-{
|
||||
- const char *object_path =
|
||||
- g_dbus_proxy_get_object_path (G_DBUS_PROXY (interface));
|
||||
- GrdContext *context = grd_daemon_get_context (GRD_DAEMON (daemon_handover));
|
||||
- GrdSettings *settings = grd_context_get_settings (context);
|
||||
- GrdSessionRdp *session_rdp = GRD_SESSION_RDP (daemon_handover->session);
|
||||
- g_autofree char *certificate = NULL;
|
||||
-
|
||||
- g_debug ("[DaemonHandover] At: %s, received RedirectClient signal",
|
||||
- object_path);
|
||||
-
|
||||
- g_object_get (G_OBJECT (settings),
|
||||
- "rdp-server-cert", &certificate,
|
||||
- NULL);
|
||||
-
|
||||
- if (!grd_session_rdp_send_server_redirection (session_rdp, routing_token,
|
||||
- username, password,
|
||||
- certificate))
|
||||
- grd_session_stop (daemon_handover->session);
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
-on_handover_is_waiting_changed (GrdDBusRemoteDesktopRdpHandover *proxy,
|
||||
- GParamSpec *pspec,
|
||||
- GrdDaemonHandover *daemon_handover)
|
||||
-{
|
||||
- gboolean handover_is_waiting;
|
||||
-
|
||||
- handover_is_waiting =
|
||||
- grd_dbus_remote_desktop_rdp_handover_get_handover_is_waiting (
|
||||
- daemon_handover->remote_desktop_handover);
|
||||
-
|
||||
- if (!handover_is_waiting)
|
||||
- return;
|
||||
-
|
||||
- start_handover (daemon_handover);
|
||||
-}
|
||||
-
|
||||
static void
|
||||
on_remote_desktop_rdp_handover_proxy_acquired (GObject *object,
|
||||
GAsyncResult *result,
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
||||
From 6358e82332ed62144bfe611dfb13093188863bd3 Mon Sep 17 00:00:00 2001
|
||||
From: Joan Torres Lopez <joantolo@redhat.com>
|
||||
Date: Mon, 26 Jan 2026 17:54:53 +0100
|
||||
Subject: [PATCH 2/4] daemon-handover: Use setup/teardown functions for signal
|
||||
management
|
||||
|
||||
Replace manual signal connection and disconnection with centralized
|
||||
setup_handover and teardown_handover functions in RDP server start/stop
|
||||
handlers and when the handover proxy is acquired or the system daemon
|
||||
name vanishes.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/merge_requests/371>
|
||||
---
|
||||
src/grd-daemon-handover.c | 79 ++++++++++++++++++++++++---------------
|
||||
1 file changed, 49 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/src/grd-daemon-handover.c b/src/grd-daemon-handover.c
|
||||
index 40fed79..95b5a54 100644
|
||||
--- a/src/grd-daemon-handover.c
|
||||
+++ b/src/grd-daemon-handover.c
|
||||
@@ -488,45 +488,72 @@ on_incoming_new_connection (GrdRdpServer *rdp_server,
|
||||
}
|
||||
|
||||
static void
|
||||
-on_rdp_server_started (GrdDaemonHandover *daemon_handover)
|
||||
+setup_handover (GrdDaemonHandover *daemon_handover)
|
||||
{
|
||||
- GrdDaemon *daemon = GRD_DAEMON (daemon_handover);
|
||||
- GrdRdpServer *rdp_server = grd_daemon_get_rdp_server (daemon);
|
||||
+ GrdRdpServer *rdp_server;
|
||||
gboolean handover_is_waiting;
|
||||
|
||||
- g_signal_connect (daemon_handover->remote_desktop_handover,
|
||||
- "take-client-ready", G_CALLBACK (on_take_client_ready),
|
||||
- daemon_handover);
|
||||
+ if (!daemon_handover->remote_desktop_handover)
|
||||
+ return;
|
||||
+
|
||||
+ rdp_server = grd_daemon_get_rdp_server (GRD_DAEMON (daemon_handover));
|
||||
+ if (!rdp_server)
|
||||
+ return;
|
||||
+
|
||||
+ g_signal_connect (daemon_handover->remote_desktop_handover, "take-client-ready",
|
||||
+ G_CALLBACK (on_take_client_ready), daemon_handover);
|
||||
+ g_signal_connect (daemon_handover->remote_desktop_handover, "redirect-client",
|
||||
+ G_CALLBACK (on_redirect_client), daemon_handover);
|
||||
+ g_signal_connect (daemon_handover->remote_desktop_handover, "notify::handover-is-waiting",
|
||||
+ G_CALLBACK (on_handover_is_waiting_changed), daemon_handover);
|
||||
|
||||
g_signal_connect (rdp_server, "incoming-new-connection",
|
||||
- G_CALLBACK (on_incoming_new_connection),
|
||||
- daemon_handover);
|
||||
+ G_CALLBACK (on_incoming_new_connection), daemon_handover);
|
||||
|
||||
- handover_is_waiting =
|
||||
- grd_dbus_remote_desktop_rdp_handover_get_handover_is_waiting (
|
||||
- daemon_handover->remote_desktop_handover);
|
||||
+ handover_is_waiting = grd_dbus_remote_desktop_rdp_handover_get_handover_is_waiting (
|
||||
+ daemon_handover->remote_desktop_handover);
|
||||
|
||||
if (handover_is_waiting)
|
||||
start_handover (daemon_handover);
|
||||
}
|
||||
|
||||
static void
|
||||
-on_rdp_server_stopped (GrdDaemonHandover *daemon_handover)
|
||||
+teardown_handover (GrdDaemonHandover *daemon_handover)
|
||||
{
|
||||
GrdRdpServer *rdp_server =
|
||||
grd_daemon_get_rdp_server (GRD_DAEMON (daemon_handover));
|
||||
|
||||
if (daemon_handover->remote_desktop_handover)
|
||||
{
|
||||
- g_signal_handlers_disconnect_by_func (
|
||||
- daemon_handover->remote_desktop_handover,
|
||||
- G_CALLBACK (on_take_client_ready),
|
||||
- daemon_handover);
|
||||
+ g_signal_handlers_disconnect_by_func (daemon_handover->remote_desktop_handover,
|
||||
+ G_CALLBACK (on_take_client_ready),
|
||||
+ daemon_handover);
|
||||
+ g_signal_handlers_disconnect_by_func (daemon_handover->remote_desktop_handover,
|
||||
+ G_CALLBACK (on_redirect_client),
|
||||
+ daemon_handover);
|
||||
+ g_signal_handlers_disconnect_by_func (daemon_handover->remote_desktop_handover,
|
||||
+ G_CALLBACK (on_handover_is_waiting_changed),
|
||||
+ daemon_handover);
|
||||
}
|
||||
|
||||
- g_signal_handlers_disconnect_by_func (rdp_server,
|
||||
- G_CALLBACK (on_incoming_new_connection),
|
||||
- daemon_handover);
|
||||
+ if (rdp_server)
|
||||
+ {
|
||||
+ g_signal_handlers_disconnect_by_func (rdp_server,
|
||||
+ G_CALLBACK (on_incoming_new_connection),
|
||||
+ daemon_handover);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+on_rdp_server_started (GrdDaemonHandover *daemon_handover)
|
||||
+{
|
||||
+ setup_handover (daemon_handover);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+on_rdp_server_stopped (GrdDaemonHandover *daemon_handover)
|
||||
+{
|
||||
+ teardown_handover (daemon_handover);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -554,10 +581,7 @@ on_remote_desktop_rdp_handover_proxy_acquired (GObject *object,
|
||||
daemon_handover = GRD_DAEMON_HANDOVER (user_data);
|
||||
daemon_handover->remote_desktop_handover = g_steal_pointer (&proxy);
|
||||
|
||||
- g_signal_connect (daemon_handover->remote_desktop_handover, "redirect-client",
|
||||
- G_CALLBACK (on_redirect_client), daemon_handover);
|
||||
- g_signal_connect (daemon_handover->remote_desktop_handover, "notify::handover-is-waiting",
|
||||
- G_CALLBACK (on_handover_is_waiting_changed), daemon_handover);
|
||||
+ setup_handover (daemon_handover);
|
||||
|
||||
grd_daemon_maybe_enable_services (GRD_DAEMON (daemon_handover));
|
||||
}
|
||||
@@ -673,13 +697,8 @@ on_gnome_remote_desktop_name_vanished (GDBusConnection *connection,
|
||||
|
||||
g_warning ("[DaemonHandover] %s name vanished", name);
|
||||
|
||||
- if (daemon_handover->remote_desktop_handover)
|
||||
- {
|
||||
- g_signal_handlers_disconnect_by_func (
|
||||
- daemon_handover->remote_desktop_handover,
|
||||
- G_CALLBACK (on_redirect_client),
|
||||
- daemon_handover);
|
||||
- }
|
||||
+ teardown_handover (daemon_handover);
|
||||
+
|
||||
g_clear_object (&daemon_handover->remote_desktop_handover);
|
||||
g_clear_object (&daemon_handover->remote_desktop_dispatcher);
|
||||
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
||||
From 882ce2a8db58c407ac691e406b6dd1ad17b8d712 Mon Sep 17 00:00:00 2001
|
||||
From: Joan Torres Lopez <joantolo@redhat.com>
|
||||
Date: Mon, 26 Jan 2026 19:18:55 +0100
|
||||
Subject: [PATCH 3/4] types: Add GRD_DBUS_ERROR domain for D-Bus errors
|
||||
|
||||
Add a custom D-Bus error domain with GRD_DBUS_ERROR_NO_HANDOVER code,
|
||||
returned when the handover daemon requests a handover but no interface
|
||||
exists yet. This allows distinguishing temporary unavailability from
|
||||
other errors.
|
||||
|
||||
Next commit will make handover daemon use it.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/merge_requests/371>
|
||||
---
|
||||
src/grd-daemon-system.c | 6 +++---
|
||||
src/grd-daemon.c | 20 ++++++++++++++++++++
|
||||
src/grd-types.h | 10 ++++++++++
|
||||
3 files changed, 33 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/grd-daemon-system.c b/src/grd-daemon-system.c
|
||||
index 950d539..58b1f71 100644
|
||||
--- a/src/grd-daemon-system.c
|
||||
+++ b/src/grd-daemon-system.c
|
||||
@@ -306,9 +306,9 @@ get_handover_object_path_for_call (GrdDaemonSystem *daemon_system,
|
||||
if (!object)
|
||||
{
|
||||
g_set_error (error,
|
||||
- G_DBUS_ERROR,
|
||||
- G_DBUS_ERROR_UNKNOWN_OBJECT,
|
||||
- "No connection waiting for handover");
|
||||
+ GRD_DBUS_ERROR,
|
||||
+ GRD_DBUS_ERROR_NO_HANDOVER,
|
||||
+ "No handover interface for session");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
diff --git a/src/grd-daemon.c b/src/grd-daemon.c
|
||||
index d1cb1ac..50bcd3d 100644
|
||||
--- a/src/grd-daemon.c
|
||||
+++ b/src/grd-daemon.c
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "grd-settings-headless.h"
|
||||
#include "grd-settings-system.h"
|
||||
#include "grd-settings-user.h"
|
||||
+#include "grd-types.h"
|
||||
#include "grd-vnc-server.h"
|
||||
|
||||
#ifdef HAVE_LIBSYSTEMD
|
||||
@@ -103,6 +104,23 @@ G_DEFINE_TYPE_WITH_PRIVATE (GrdDaemon, grd_daemon, G_TYPE_APPLICATION)
|
||||
static void maybe_start_rdp_server (GrdDaemon *daemon);
|
||||
#endif
|
||||
|
||||
+static const GDBusErrorEntry grd_dbus_error_entries[] =
|
||||
+{
|
||||
+ { GRD_DBUS_ERROR_NO_HANDOVER, "org.gnome.RemoteDesktop.Error.NoHandover" },
|
||||
+};
|
||||
+
|
||||
+GQuark
|
||||
+grd_dbus_error_quark (void)
|
||||
+{
|
||||
+ static gsize quark = 0;
|
||||
+
|
||||
+ g_dbus_error_register_error_domain ("grd-dbus-error-quark",
|
||||
+ &quark,
|
||||
+ grd_dbus_error_entries,
|
||||
+ G_N_ELEMENTS (grd_dbus_error_entries));
|
||||
+ return (GQuark) quark;
|
||||
+}
|
||||
+
|
||||
GCancellable *
|
||||
grd_daemon_get_cancellable (GrdDaemon *daemon)
|
||||
{
|
||||
@@ -1027,6 +1045,8 @@ grd_daemon_class_init (GrdDaemonClass *klass)
|
||||
0,
|
||||
NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 0);
|
||||
+
|
||||
+ grd_dbus_error_quark ();
|
||||
}
|
||||
|
||||
static void
|
||||
diff --git a/src/grd-types.h b/src/grd-types.h
|
||||
index 32d4cbd..16f5a25 100644
|
||||
--- a/src/grd-types.h
|
||||
+++ b/src/grd-types.h
|
||||
@@ -22,6 +22,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
+#include <glib.h>
|
||||
+
|
||||
typedef struct _GrdAVCFrameInfo GrdAVCFrameInfo;
|
||||
typedef struct _GrdBitstream GrdBitstream;
|
||||
typedef struct _GrdClipboard GrdClipboard;
|
||||
@@ -97,3 +99,11 @@ typedef enum _GrdPixelFormat
|
||||
{
|
||||
GRD_PIXEL_FORMAT_RGBA8888,
|
||||
} GrdPixelFormat;
|
||||
+
|
||||
+typedef enum _GrdDBusError
|
||||
+{
|
||||
+ GRD_DBUS_ERROR_NO_HANDOVER,
|
||||
+} GrdDBusError;
|
||||
+
|
||||
+#define GRD_DBUS_ERROR grd_dbus_error_quark ()
|
||||
+GQuark grd_dbus_error_quark (void);
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
||||
From 670e1f54f52bbaa1aaf33599bd72eef7fc7699d8 Mon Sep 17 00:00:00 2001
|
||||
From: Joan Torres Lopez <joantolo@redhat.com>
|
||||
Date: Mon, 26 Jan 2026 19:22:09 +0100
|
||||
Subject: [PATCH 4/4] daemon-handover: Watch for handover interface
|
||||
availability
|
||||
|
||||
When the handover request fails with GRD_DBUS_ERROR_NO_HANDOVER, use a
|
||||
GDBusObjectManager to watch for new handover objects. When one becomes
|
||||
available, retry the handover request. This handles the race condition
|
||||
where the handover daemon requests a handover before the system daemon
|
||||
has created the interface.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/merge_requests/371>
|
||||
---
|
||||
src/grd-daemon-handover.c | 128 ++++++++++++++++++++++++++++++++++++--
|
||||
src/meson.build | 1 +
|
||||
2 files changed, 124 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/grd-daemon-handover.c b/src/grd-daemon-handover.c
|
||||
index 95b5a54..709f14b 100644
|
||||
--- a/src/grd-daemon-handover.c
|
||||
+++ b/src/grd-daemon-handover.c
|
||||
@@ -46,6 +46,8 @@ struct _GrdDaemonHandover
|
||||
GrdDBusRemoteDesktopRdpDispatcher *remote_desktop_dispatcher;
|
||||
GrdDBusRemoteDesktopRdpHandover *remote_desktop_handover;
|
||||
|
||||
+ GDBusObjectManager *handover_object_manager;
|
||||
+
|
||||
GrdSession *session;
|
||||
|
||||
gboolean use_system_credentials;
|
||||
@@ -59,6 +61,11 @@ struct _GrdDaemonHandover
|
||||
|
||||
G_DEFINE_TYPE (GrdDaemonHandover, grd_daemon_handover, GRD_TYPE_DAEMON)
|
||||
|
||||
+static void
|
||||
+on_remote_desktop_rdp_dispatcher_handover_requested (GObject *object,
|
||||
+ GAsyncResult *result,
|
||||
+ gpointer user_data);
|
||||
+
|
||||
static gboolean
|
||||
grd_daemon_handover_is_ready (GrdDaemon *daemon)
|
||||
{
|
||||
@@ -556,6 +563,105 @@ on_rdp_server_stopped (GrdDaemonHandover *daemon_handover)
|
||||
teardown_handover (daemon_handover);
|
||||
}
|
||||
|
||||
+static void
|
||||
+on_handover_object_added (GDBusObjectManager *manager,
|
||||
+ GDBusObject *object,
|
||||
+ GrdDaemonHandover *daemon_handover)
|
||||
+{
|
||||
+ g_autofree char *session_id = NULL;
|
||||
+ g_autofree char *expected_object_path = NULL;
|
||||
+ const char *object_path;
|
||||
+ GCancellable *cancellable;
|
||||
+
|
||||
+ session_id = grd_get_session_id_from_pid (getpid ());
|
||||
+ if (!session_id)
|
||||
+ {
|
||||
+ g_warning ("[DaemonHandover] Could not get session id");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ expected_object_path = g_strdup_printf ("%s/session%s",
|
||||
+ REMOTE_DESKTOP_HANDOVERS_OBJECT_PATH,
|
||||
+ session_id);
|
||||
+ object_path = g_dbus_object_get_object_path (object);
|
||||
+
|
||||
+ if (g_strcmp0 (object_path, expected_object_path) != 0)
|
||||
+ {
|
||||
+ g_debug ("[DaemonHandover] Ignoring handover object at: %s, "
|
||||
+ "expected: %s", object_path, expected_object_path);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ cancellable = grd_daemon_get_cancellable (GRD_DAEMON (daemon_handover));
|
||||
+ grd_dbus_remote_desktop_rdp_dispatcher_call_request_handover (
|
||||
+ daemon_handover->remote_desktop_dispatcher,
|
||||
+ cancellable,
|
||||
+ on_remote_desktop_rdp_dispatcher_handover_requested,
|
||||
+ daemon_handover);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+on_handover_object_manager_acquired (GObject *source_object,
|
||||
+ GAsyncResult *result,
|
||||
+ gpointer user_data)
|
||||
+{
|
||||
+ g_autoptr (GDBusObjectManager) manager = NULL;
|
||||
+ g_autoptr (GError) error = NULL;
|
||||
+ GrdDaemonHandover *daemon_handover;
|
||||
+
|
||||
+ manager =
|
||||
+ grd_dbus_remote_desktop_object_manager_client_new_for_bus_finish (result,
|
||||
+ &error);
|
||||
+ if (!manager)
|
||||
+ {
|
||||
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||
+ g_warning ("[DaemonHandover] Failed to create handover object manager: %s",
|
||||
+ error->message);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ daemon_handover = GRD_DAEMON_HANDOVER (user_data);
|
||||
+ daemon_handover->handover_object_manager = g_steal_pointer (&manager);
|
||||
+
|
||||
+ g_debug ("[DaemonHandover] Watching handover objects");
|
||||
+
|
||||
+ g_signal_connect (daemon_handover->handover_object_manager, "object-added",
|
||||
+ G_CALLBACK (on_handover_object_added), daemon_handover);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+start_watching_handover_objects (GrdDaemonHandover *daemon_handover)
|
||||
+{
|
||||
+ GCancellable *cancellable;
|
||||
+
|
||||
+ if (daemon_handover->handover_object_manager)
|
||||
+ return;
|
||||
+
|
||||
+ cancellable = grd_daemon_get_cancellable (GRD_DAEMON (daemon_handover));
|
||||
+
|
||||
+ grd_dbus_remote_desktop_object_manager_client_new_for_bus (
|
||||
+ G_BUS_TYPE_SYSTEM,
|
||||
+ G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START,
|
||||
+ REMOTE_DESKTOP_BUS_NAME,
|
||||
+ REMOTE_DESKTOP_HANDOVERS_OBJECT_PATH,
|
||||
+ cancellable,
|
||||
+ on_handover_object_manager_acquired,
|
||||
+ daemon_handover);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+stop_watching_handover_objects (GrdDaemonHandover *daemon_handover)
|
||||
+{
|
||||
+ if (!daemon_handover->handover_object_manager)
|
||||
+ return;
|
||||
+
|
||||
+ g_signal_handlers_disconnect_by_func (daemon_handover->handover_object_manager,
|
||||
+ G_CALLBACK (on_handover_object_added),
|
||||
+ daemon_handover);
|
||||
+
|
||||
+ g_clear_object (&daemon_handover->handover_object_manager);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
on_remote_desktop_rdp_handover_proxy_acquired (GObject *object,
|
||||
GAsyncResult *result,
|
||||
@@ -579,6 +685,9 @@ on_remote_desktop_rdp_handover_proxy_acquired (GObject *object,
|
||||
}
|
||||
|
||||
daemon_handover = GRD_DAEMON_HANDOVER (user_data);
|
||||
+
|
||||
+ stop_watching_handover_objects (daemon_handover);
|
||||
+
|
||||
daemon_handover->remote_desktop_handover = g_steal_pointer (&proxy);
|
||||
|
||||
setup_handover (daemon_handover);
|
||||
@@ -607,11 +716,16 @@ on_remote_desktop_rdp_dispatcher_handover_requested (GObject *object,
|
||||
&error);
|
||||
if (!success)
|
||||
{
|
||||
- if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||
- return;
|
||||
-
|
||||
- g_warning ("[DaemonHandover] Failed to request remote desktop "
|
||||
- "handover: %s", error->message);
|
||||
+ if (g_error_matches (error, GRD_DBUS_ERROR, GRD_DBUS_ERROR_NO_HANDOVER))
|
||||
+ {
|
||||
+ daemon_handover = GRD_DAEMON_HANDOVER (user_data);
|
||||
+ start_watching_handover_objects (daemon_handover);
|
||||
+ }
|
||||
+ else if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||
+ {
|
||||
+ g_warning ("[DaemonHandover] Failed to request remote desktop "
|
||||
+ "handover: %s", error->message);
|
||||
+ }
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -702,6 +816,8 @@ on_gnome_remote_desktop_name_vanished (GDBusConnection *connection,
|
||||
g_clear_object (&daemon_handover->remote_desktop_handover);
|
||||
g_clear_object (&daemon_handover->remote_desktop_dispatcher);
|
||||
|
||||
+ stop_watching_handover_objects (daemon_handover);
|
||||
+
|
||||
if (grd_is_remote_login ())
|
||||
grd_session_manager_call_logout_sync ();
|
||||
}
|
||||
@@ -765,6 +881,8 @@ grd_daemon_handover_shutdown (GApplication *app)
|
||||
g_clear_object (&daemon_handover->remote_desktop_handover);
|
||||
g_clear_object (&daemon_handover->remote_desktop_dispatcher);
|
||||
|
||||
+ stop_watching_handover_objects (daemon_handover);
|
||||
+
|
||||
g_clear_handle_id (&daemon_handover->gnome_remote_desktop_watch_name_id,
|
||||
g_bus_unwatch_name);
|
||||
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index 525bb5d..185041e 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -314,6 +314,7 @@ gen_daemon_sources += gnome.gdbus_codegen('grd-dbus-mutter-remote-desktop',
|
||||
namespace: 'GrdDBusMutter')
|
||||
dbus_gen_remote_desktop = gnome.gdbus_codegen('grd-dbus-remote-desktop',
|
||||
'org.gnome.RemoteDesktop.xml',
|
||||
+ object_manager: true,
|
||||
interface_prefix: 'org.gnome.RemoteDesktop.',
|
||||
namespace: 'GrdDBusRemoteDesktop')
|
||||
gen_daemon_sources += dbus_gen_remote_desktop
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@ -0,0 +1,89 @@
|
||||
From 9d11bc6ef3fd5889c8fa7a21e0f6a8df8cf011c1 Mon Sep 17 00:00:00 2001
|
||||
From: Joan Torres Lopez <joantolo@redhat.com>
|
||||
Date: Tue, 3 Mar 2026 17:57:16 +0100
|
||||
Subject: [PATCH] daemon-system: Respect existing remote_id from third-party
|
||||
remote displays
|
||||
|
||||
When a remote display already has a valid remote_id set (not "/" or null),
|
||||
reuse that id instead of generating a new one and overwriting it. This
|
||||
allows third-party remote desktop solutions to work correctly by preserving
|
||||
their original remote_id. Only generate and set a new remote_id when the
|
||||
display doesn't have one.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/merge_requests/386>
|
||||
---
|
||||
src/grd-daemon-system.c | 46 +++++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 40 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/grd-daemon-system.c b/src/grd-daemon-system.c
|
||||
index 5c7f7ec..d5c382a 100644
|
||||
--- a/src/grd-daemon-system.c
|
||||
+++ b/src/grd-daemon-system.c
|
||||
@@ -1092,17 +1092,32 @@ on_gdm_remote_display_session_id_changed (GrdDBusGdmRemoteDisplay *remote_displa
|
||||
register_handover_iface (remote_client, session_id);
|
||||
}
|
||||
|
||||
-static GrdRemoteClient *
|
||||
-remote_client_new_from_display (GrdDaemonSystem *daemon_system,
|
||||
- GrdDBusGdmRemoteDisplay *remote_display)
|
||||
+static char *
|
||||
+get_remote_id_from_remote_display (GrdDaemonSystem *daemon_system,
|
||||
+ GrdDBusGdmRemoteDisplay *remote_display)
|
||||
{
|
||||
- g_autoptr (GrdRemoteClient) remote_client = NULL;
|
||||
+ const char *display_remote_id;
|
||||
+ g_autofree char *new_remote_id = NULL;
|
||||
g_autoptr (GError) error = NULL;
|
||||
|
||||
- remote_client = remote_client_new (daemon_system, NULL);
|
||||
+ display_remote_id = grd_dbus_gdm_remote_display_get_remote_id (remote_display);
|
||||
+ if (display_remote_id && !g_str_equal (display_remote_id, "/"))
|
||||
+ {
|
||||
+ if (g_hash_table_contains (daemon_system->remote_clients, display_remote_id))
|
||||
+ {
|
||||
+ g_warning ("[DaemonSystem] A remote client with remote_id %s already "
|
||||
+ "exists", display_remote_id);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ return g_strdup (display_remote_id);
|
||||
+ }
|
||||
|
||||
+ /* If the remote display doesn't have a valid remote_id,
|
||||
+ * generate a new one and set it */
|
||||
+ new_remote_id = get_next_available_id (daemon_system);
|
||||
if (!grd_dbus_gdm_remote_display_call_set_remote_id_sync (remote_display,
|
||||
- remote_client->id,
|
||||
+ new_remote_id,
|
||||
NULL,
|
||||
&error))
|
||||
{
|
||||
@@ -1111,6 +1126,25 @@ remote_client_new_from_display (GrdDaemonSystem *daemon_system,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ return g_steal_pointer (&new_remote_id);
|
||||
+}
|
||||
+
|
||||
+static GrdRemoteClient *
|
||||
+remote_client_new_from_display (GrdDaemonSystem *daemon_system,
|
||||
+ GrdDBusGdmRemoteDisplay *remote_display)
|
||||
+{
|
||||
+ g_autoptr (GrdRemoteClient) remote_client = NULL;
|
||||
+ char *remote_id;
|
||||
+
|
||||
+ remote_client = g_new0 (GrdRemoteClient, 1);
|
||||
+ remote_client->daemon_system = daemon_system;
|
||||
+
|
||||
+ remote_id = get_remote_id_from_remote_display (daemon_system, remote_display);
|
||||
+ if (!remote_id)
|
||||
+ return NULL;
|
||||
+
|
||||
+ remote_client->id = remote_id;
|
||||
+
|
||||
return g_steal_pointer (&remote_client);
|
||||
}
|
||||
|
||||
--
|
||||
2.51.0
|
||||
|
||||
1226
0001-daemon-system-Use-timeout_add_seconds_once-on-abort_.patch
Normal file
1226
0001-daemon-system-Use-timeout_add_seconds_once-on-abort_.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,606 +0,0 @@
|
||||
From eb4a7aebfd005d3a82b6bd63ee864bef941d9285 Mon Sep 17 00:00:00 2001
|
||||
From: Stephan Seitz <sseitz@nvidia.com>
|
||||
Date: Fri, 29 Aug 2025 11:31:20 +0200
|
||||
Subject: [PATCH] hwaccel-nvidia: Fix image corruptions on Blackwell GPUs
|
||||
|
||||
Nvidia devices never supported `NV_ENC_PARAMS_FRAME_FIELD_MODE_MBAFF`.
|
||||
Though the code worked for past, it causes interlaced line artifacts on
|
||||
Blackwell GPUs.
|
||||
|
||||
Using `NV_ENC_PARAMS_FRAME_FIELD_MODE_FRAME` and changing
|
||||
`grd-cuda-avc-utils` to produce progressive frames works on
|
||||
Blackwell and on older GPU generations.
|
||||
|
||||
Clang was used instead of nvcc, to regenerate the device kernel.
|
||||
`clang --cuda-gpu-arch=sm_30 -S src/grd-cuda-avc-utils.cu -o data/grd-cuda-avc-utils_30.ptx --no-cuda-version-check -O3 --cuda-device-only`
|
||||
|
||||
Closes https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/issues/263
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/merge_requests/344>
|
||||
---
|
||||
data/grd-cuda-avc-utils_30.ptx | 453 ++++++++++++++++++---------------
|
||||
src/grd-cuda-avc-utils.cu | 55 +---
|
||||
src/grd-hwaccel-nvidia.c | 2 +-
|
||||
3 files changed, 256 insertions(+), 254 deletions(-)
|
||||
|
||||
diff --git a/data/grd-cuda-avc-utils_30.ptx b/data/grd-cuda-avc-utils_30.ptx
|
||||
index b14b193c..62f6d5f2 100644
|
||||
--- a/data/grd-cuda-avc-utils_30.ptx
|
||||
+++ b/data/grd-cuda-avc-utils_30.ptx
|
||||
@@ -1,224 +1,267 @@
|
||||
//
|
||||
-// Generated by NVIDIA NVVM Compiler
|
||||
-//
|
||||
-// Compiler Build ID: CL-27506705
|
||||
-// Cuda compilation tools, release 10.2, V10.2.89
|
||||
-// Based on LLVM 3.4svn
|
||||
+// Generated by LLVM NVPTX Back-End
|
||||
//
|
||||
|
||||
-.version 6.5
|
||||
+.version 8.7
|
||||
.target sm_30
|
||||
.address_size 64
|
||||
|
||||
- // .globl convert_2x2_bgrx_area_to_yuv420_nv12
|
||||
+ // .globl rgb_to_y // -- Begin function rgb_to_y
|
||||
+ // @rgb_to_y
|
||||
+.visible .func (.param .b32 func_retval0) rgb_to_y(
|
||||
+ .param .b32 rgb_to_y_param_0,
|
||||
+ .param .b32 rgb_to_y_param_1,
|
||||
+ .param .b32 rgb_to_y_param_2
|
||||
+)
|
||||
+{
|
||||
+ .reg .b16 %rs<4>;
|
||||
+ .reg .b32 %r<7>;
|
||||
+
|
||||
+// %bb.0:
|
||||
+ ld.param.u8 %rs1, [rgb_to_y_param_0];
|
||||
+ ld.param.u8 %rs2, [rgb_to_y_param_1];
|
||||
+ mul.wide.u16 %r1, %rs1, 54;
|
||||
+ ld.param.u8 %rs3, [rgb_to_y_param_2];
|
||||
+ mul.wide.u16 %r2, %rs2, 183;
|
||||
+ add.s32 %r3, %r2, %r1;
|
||||
+ mul.wide.u16 %r4, %rs3, 18;
|
||||
+ add.s32 %r5, %r3, %r4;
|
||||
+ shr.u32 %r6, %r5, 8;
|
||||
+ st.param.b32 [func_retval0], %r6;
|
||||
+ ret;
|
||||
+ // -- End function
|
||||
+}
|
||||
+ // .globl rgb_to_u // -- Begin function rgb_to_u
|
||||
+.visible .func (.param .b32 func_retval0) rgb_to_u(
|
||||
+ .param .b32 rgb_to_u_param_0,
|
||||
+ .param .b32 rgb_to_u_param_1,
|
||||
+ .param .b32 rgb_to_u_param_2
|
||||
+) // @rgb_to_u
|
||||
+{
|
||||
+ .reg .b16 %rs<7>;
|
||||
+ .reg .b32 %r<7>;
|
||||
+
|
||||
+// %bb.0:
|
||||
+ ld.param.u8 %rs1, [rgb_to_u_param_0];
|
||||
+ ld.param.u8 %rs2, [rgb_to_u_param_1];
|
||||
+ mul.wide.u16 %r1, %rs1, -29;
|
||||
+ ld.param.u8 %rs3, [rgb_to_u_param_2];
|
||||
+ mul.wide.u16 %r2, %rs2, -99;
|
||||
+ add.s32 %r3, %r2, %r1;
|
||||
+ mul.wide.u16 %r4, %rs3, 128;
|
||||
+ add.s32 %r5, %r3, %r4;
|
||||
+ cvt.u16.u32 %rs4, %r5;
|
||||
+ shr.u16 %rs5, %rs4, 8;
|
||||
+ xor.b16 %rs6, %rs5, 128;
|
||||
+ cvt.u32.u16 %r6, %rs6;
|
||||
+ st.param.b32 [func_retval0], %r6;
|
||||
+ ret;
|
||||
+ // -- End function
|
||||
+}
|
||||
+ // .globl rgb_to_v // -- Begin function rgb_to_v
|
||||
+.visible .func (.param .b32 func_retval0) rgb_to_v(
|
||||
+ .param .b32 rgb_to_v_param_0,
|
||||
+ .param .b32 rgb_to_v_param_1,
|
||||
+ .param .b32 rgb_to_v_param_2
|
||||
+) // @rgb_to_v
|
||||
+{
|
||||
+ .reg .b16 %rs<7>;
|
||||
+ .reg .b32 %r<7>;
|
||||
|
||||
+// %bb.0:
|
||||
+ ld.param.u8 %rs1, [rgb_to_v_param_0];
|
||||
+ ld.param.u8 %rs2, [rgb_to_v_param_1];
|
||||
+ mul.wide.u16 %r1, %rs1, 128;
|
||||
+ ld.param.u8 %rs3, [rgb_to_v_param_2];
|
||||
+ mul.wide.u16 %r2, %rs2, -116;
|
||||
+ add.s32 %r3, %r2, %r1;
|
||||
+ mul.wide.u16 %r4, %rs3, -12;
|
||||
+ add.s32 %r5, %r3, %r4;
|
||||
+ cvt.u16.u32 %rs4, %r5;
|
||||
+ shr.u16 %rs5, %rs4, 8;
|
||||
+ xor.b16 %rs6, %rs5, 128;
|
||||
+ cvt.u32.u16 %r6, %rs6;
|
||||
+ st.param.b32 [func_retval0], %r6;
|
||||
+ ret;
|
||||
+ // -- End function
|
||||
+}
|
||||
+ // .globl convert_2x2_bgrx_area_to_yuv420_nv12 // -- Begin function convert_2x2_bgrx_area_to_yuv420_nv12
|
||||
.visible .entry convert_2x2_bgrx_area_to_yuv420_nv12(
|
||||
- .param .u64 convert_2x2_bgrx_area_to_yuv420_nv12_param_0,
|
||||
- .param .u64 convert_2x2_bgrx_area_to_yuv420_nv12_param_1,
|
||||
+ .param .u64 .ptr .align 1 convert_2x2_bgrx_area_to_yuv420_nv12_param_0,
|
||||
+ .param .u64 .ptr .align 1 convert_2x2_bgrx_area_to_yuv420_nv12_param_1,
|
||||
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_2,
|
||||
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_3,
|
||||
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_4,
|
||||
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_5,
|
||||
.param .u16 convert_2x2_bgrx_area_to_yuv420_nv12_param_6
|
||||
-)
|
||||
+) // @convert_2x2_bgrx_area_to_yuv420_nv12
|
||||
{
|
||||
- .reg .pred %p<17>;
|
||||
- .reg .b16 %rs<18>;
|
||||
- .reg .b32 %r<127>;
|
||||
- .reg .b64 %rd<40>;
|
||||
+ .reg .pred %p<13>;
|
||||
+ .reg .b16 %rs<27>;
|
||||
+ .reg .b32 %r<104>;
|
||||
+ .reg .b64 %rd<25>;
|
||||
|
||||
-
|
||||
- ld.param.u64 %rd6, [convert_2x2_bgrx_area_to_yuv420_nv12_param_0];
|
||||
- ld.param.u64 %rd7, [convert_2x2_bgrx_area_to_yuv420_nv12_param_1];
|
||||
- ld.param.u16 %rs7, [convert_2x2_bgrx_area_to_yuv420_nv12_param_2];
|
||||
- ld.param.u16 %rs8, [convert_2x2_bgrx_area_to_yuv420_nv12_param_3];
|
||||
- ld.param.u16 %rs9, [convert_2x2_bgrx_area_to_yuv420_nv12_param_5];
|
||||
- ld.param.u16 %rs10, [convert_2x2_bgrx_area_to_yuv420_nv12_param_6];
|
||||
- mov.u32 %r30, %ntid.x;
|
||||
- mov.u32 %r31, %ctaid.x;
|
||||
- mov.u32 %r32, %tid.x;
|
||||
- mad.lo.s32 %r1, %r30, %r31, %r32;
|
||||
- mov.u32 %r33, %ntid.y;
|
||||
- mov.u32 %r34, %ctaid.y;
|
||||
- mov.u32 %r35, %tid.y;
|
||||
- mad.lo.s32 %r2, %r33, %r34, %r35;
|
||||
- and.b32 %r36, %r1, 65535;
|
||||
- ld.param.u16 %r37, [convert_2x2_bgrx_area_to_yuv420_nv12_param_4];
|
||||
- shr.u32 %r38, %r37, 1;
|
||||
+// %bb.0:
|
||||
+ ld.param.u64 %rd7, [convert_2x2_bgrx_area_to_yuv420_nv12_param_0];
|
||||
+ ld.param.u64 %rd8, [convert_2x2_bgrx_area_to_yuv420_nv12_param_1];
|
||||
+ cvta.to.global.u64 %rd1, %rd8;
|
||||
+ cvta.to.global.u64 %rd2, %rd7;
|
||||
+ mov.u32 %r32, %ctaid.x;
|
||||
+ ld.param.u16 %rs12, [convert_2x2_bgrx_area_to_yuv420_nv12_param_4];
|
||||
+ mov.u32 %r33, %ntid.x;
|
||||
+ mov.u32 %r34, %tid.x;
|
||||
+ mad.lo.s32 %r1, %r32, %r33, %r34;
|
||||
+ and.b32 %r35, %r1, 65535;
|
||||
+ shr.u16 %rs13, %rs12, 1;
|
||||
+ cvt.u32.u16 %r36, %rs13;
|
||||
+ setp.ge.u32 %p1, %r35, %r36;
|
||||
+ @%p1 bra $L__BB3_11;
|
||||
+// %bb.1:
|
||||
+ ld.param.u16 %rs10, [convert_2x2_bgrx_area_to_yuv420_nv12_param_5];
|
||||
+ mov.u32 %r37, %tid.y;
|
||||
+ mov.u32 %r38, %ntid.y;
|
||||
+ mov.u32 %r39, %ctaid.y;
|
||||
+ mad.lo.s32 %r2, %r39, %r38, %r37;
|
||||
and.b32 %r3, %r2, 65535;
|
||||
- cvt.u32.u16 %r4, %rs9;
|
||||
- shr.u32 %r5, %r4, 1;
|
||||
- setp.ge.u32 %p1, %r3, %r5;
|
||||
- setp.ge.u32 %p2, %r36, %r38;
|
||||
- or.pred %p3, %p1, %p2;
|
||||
- @%p3 bra BB0_10;
|
||||
-
|
||||
- cvta.to.global.u64 %rd8, %rd6;
|
||||
+ cvt.u32.u16 %r4, %rs10;
|
||||
+ shr.u32 %r40, %r4, 1;
|
||||
+ setp.ge.u32 %p2, %r3, %r40;
|
||||
+ @%p2 bra $L__BB3_11;
|
||||
+// %bb.2:
|
||||
+ ld.param.u16 %rs11, [convert_2x2_bgrx_area_to_yuv420_nv12_param_6];
|
||||
+ ld.param.u16 %rs9, [convert_2x2_bgrx_area_to_yuv420_nv12_param_3];
|
||||
+ ld.param.u16 %rs8, [convert_2x2_bgrx_area_to_yuv420_nv12_param_2];
|
||||
+ cvt.u32.u16 %r5, %rs8;
|
||||
shl.b32 %r42, %r1, 1;
|
||||
- and.b32 %r6, %r42, 65534;
|
||||
- mov.u32 %r43, 1;
|
||||
- shl.b32 %r44, %r2, 1;
|
||||
- and.b32 %r7, %r44, 65534;
|
||||
- cvt.u32.u16 %r45, %rs7;
|
||||
- mul.lo.s32 %r46, %r7, %r45;
|
||||
- cvt.u64.u32 %rd9, %r46;
|
||||
- cvt.u64.u32 %rd10, %r6;
|
||||
- add.s64 %rd1, %rd9, %rd10;
|
||||
- cvta.to.global.u64 %rd11, %rd7;
|
||||
- shl.b64 %rd12, %rd1, 2;
|
||||
- add.s64 %rd2, %rd11, %rd12;
|
||||
- setp.lt.u32 %p4, %r7, %r5;
|
||||
- shl.b32 %r47, %r2, 2;
|
||||
- sub.s32 %r48, %r43, %r4;
|
||||
- selp.b32 %r49, 0, %r48, %p4;
|
||||
- mov.u32 %r124, 0;
|
||||
- add.s32 %r50, %r49, %r47;
|
||||
- cvt.u64.u32 %rd13, %r50;
|
||||
- and.b64 %rd14, %rd13, 65535;
|
||||
- cvt.u64.u16 %rd15, %rs10;
|
||||
- mul.lo.s64 %rd16, %rd14, %rd15;
|
||||
- add.s64 %rd17, %rd16, %rd10;
|
||||
- add.s64 %rd3, %rd8, %rd17;
|
||||
- add.s32 %r51, %r7, 1;
|
||||
- and.b32 %r52, %r51, 65535;
|
||||
- setp.lt.u32 %p5, %r52, %r5;
|
||||
- shl.b32 %r53, %r51, 1;
|
||||
- selp.b32 %r54, 0, %r48, %p5;
|
||||
- add.s32 %r55, %r54, %r53;
|
||||
- cvt.u64.u32 %rd18, %r55;
|
||||
- and.b64 %rd19, %rd18, 65535;
|
||||
- mul.lo.s64 %rd20, %rd19, %rd15;
|
||||
- add.s64 %rd21, %rd20, %rd10;
|
||||
- add.s64 %rd4, %rd8, %rd21;
|
||||
- shr.u32 %r56, %r4, 2;
|
||||
- setp.lt.u32 %p6, %r3, %r56;
|
||||
- sub.s32 %r57, %r43, %r5;
|
||||
- selp.b32 %r58, 0, %r57, %p6;
|
||||
- shl.b32 %r59, %r3, 1;
|
||||
- add.s32 %r60, %r59, %r58;
|
||||
- cvt.u64.u32 %rd22, %r60;
|
||||
- and.b64 %rd23, %rd22, 65535;
|
||||
- cvt.u64.u16 %rd24, %rs9;
|
||||
- add.s64 %rd25, %rd23, %rd24;
|
||||
- mul.lo.s64 %rd26, %rd25, %rd15;
|
||||
- add.s64 %rd27, %rd26, %rd10;
|
||||
- add.s64 %rd5, %rd8, %rd27;
|
||||
- setp.ge.u32 %p7, %r6, %r45;
|
||||
- cvt.u32.u16 %r61, %rs8;
|
||||
- setp.ge.u32 %p8, %r7, %r61;
|
||||
- mov.u16 %rs16, 0;
|
||||
- or.pred %p9, %p7, %p8;
|
||||
- mov.u16 %rs15, %rs16;
|
||||
- mov.u32 %r125, %r124;
|
||||
- mov.u32 %r126, %r124;
|
||||
- @%p9 bra BB0_3;
|
||||
-
|
||||
- ld.global.u32 %r62, [%rd2];
|
||||
- and.b32 %r126, %r62, 255;
|
||||
- bfe.u32 %r125, %r62, 8, 8;
|
||||
- bfe.u32 %r124, %r62, 16, 8;
|
||||
- mul.lo.s32 %r63, %r126, 18;
|
||||
- mad.lo.s32 %r64, %r124, 54, %r63;
|
||||
- mad.lo.s32 %r65, %r125, 183, %r64;
|
||||
- shr.u32 %r66, %r65, 8;
|
||||
- cvt.u16.u32 %rs15, %r66;
|
||||
-
|
||||
-BB0_3:
|
||||
- st.global.u8 [%rd3], %rs15;
|
||||
- add.s32 %r14, %r6, 1;
|
||||
- setp.ge.u32 %p11, %r14, %r45;
|
||||
- or.pred %p12, %p11, %p8;
|
||||
- @%p12 bra BB0_5;
|
||||
-
|
||||
- ld.global.u32 %r69, [%rd2+4];
|
||||
- and.b32 %r70, %r69, 255;
|
||||
- add.s32 %r126, %r70, %r126;
|
||||
- bfe.u32 %r71, %r69, 8, 8;
|
||||
- add.s32 %r125, %r71, %r125;
|
||||
- bfe.u32 %r72, %r69, 16, 8;
|
||||
- add.s32 %r124, %r72, %r124;
|
||||
- mul.lo.s32 %r73, %r70, 18;
|
||||
- mad.lo.s32 %r74, %r72, 54, %r73;
|
||||
- mad.lo.s32 %r75, %r71, 183, %r74;
|
||||
- shr.u32 %r76, %r75, 8;
|
||||
- cvt.u16.u32 %rs16, %r76;
|
||||
-
|
||||
-BB0_5:
|
||||
- setp.lt.u32 %p13, %r6, %r45;
|
||||
- st.global.u8 [%rd3+1], %rs16;
|
||||
- and.b32 %r82, %r2, 32767;
|
||||
- shl.b32 %r83, %r82, 1;
|
||||
- add.s32 %r84, %r83, 1;
|
||||
- setp.lt.u32 %p14, %r84, %r61;
|
||||
- and.pred %p15, %p13, %p14;
|
||||
- @%p15 bra BB0_7;
|
||||
- bra.uni BB0_6;
|
||||
-
|
||||
-BB0_7:
|
||||
- cvt.u64.u16 %rd28, %rs7;
|
||||
- add.s64 %rd29, %rd1, %rd28;
|
||||
- shl.b64 %rd31, %rd29, 2;
|
||||
- add.s64 %rd32, %rd11, %rd31;
|
||||
- ld.global.u32 %r87, [%rd32];
|
||||
- and.b32 %r88, %r87, 255;
|
||||
- add.s32 %r126, %r88, %r126;
|
||||
- bfe.u32 %r89, %r87, 8, 8;
|
||||
- add.s32 %r125, %r89, %r125;
|
||||
- bfe.u32 %r90, %r87, 16, 8;
|
||||
- add.s32 %r124, %r90, %r124;
|
||||
- mul.lo.s32 %r91, %r88, 18;
|
||||
- mad.lo.s32 %r92, %r90, 54, %r91;
|
||||
- mad.lo.s32 %r93, %r89, 183, %r92;
|
||||
- shr.u32 %r94, %r93, 8;
|
||||
- st.global.u8 [%rd4], %r94;
|
||||
- mov.u16 %rs17, 0;
|
||||
- @%p11 bra BB0_9;
|
||||
-
|
||||
- add.s64 %rd34, %rd28, 1;
|
||||
- and.b64 %rd35, %rd34, 65535;
|
||||
- add.s64 %rd36, %rd1, %rd35;
|
||||
- shl.b64 %rd38, %rd36, 2;
|
||||
- add.s64 %rd39, %rd11, %rd38;
|
||||
- ld.global.u32 %r95, [%rd39];
|
||||
- and.b32 %r96, %r95, 255;
|
||||
- add.s32 %r126, %r96, %r126;
|
||||
- bfe.u32 %r97, %r95, 8, 8;
|
||||
- add.s32 %r125, %r97, %r125;
|
||||
- bfe.u32 %r98, %r95, 16, 8;
|
||||
- add.s32 %r124, %r98, %r124;
|
||||
- mul.lo.s32 %r99, %r96, 18;
|
||||
- mad.lo.s32 %r100, %r98, 54, %r99;
|
||||
- mad.lo.s32 %r101, %r97, 183, %r100;
|
||||
- shr.u32 %r102, %r101, 8;
|
||||
- cvt.u16.u32 %rs17, %r102;
|
||||
- bra.uni BB0_9;
|
||||
-
|
||||
-BB0_6:
|
||||
- mov.u16 %rs17, 0;
|
||||
- st.global.u8 [%rd4], %rs17;
|
||||
-
|
||||
-BB0_9:
|
||||
- st.global.u8 [%rd4+1], %rs17;
|
||||
- bfe.u32 %r103, %r124, 2, 8;
|
||||
- mul.lo.s32 %r104, %r103, -29;
|
||||
- bfe.u32 %r105, %r125, 2, 8;
|
||||
- mad.lo.s32 %r106, %r105, -99, %r104;
|
||||
- bfe.u32 %r107, %r126, 2, 8;
|
||||
- shl.b32 %r108, %r107, 7;
|
||||
- add.s32 %r109, %r106, %r108;
|
||||
- shr.u32 %r110, %r109, 8;
|
||||
- add.s32 %r111, %r110, 128;
|
||||
- st.global.u8 [%rd5], %r111;
|
||||
- shl.b32 %r112, %r124, 5;
|
||||
- and.b32 %r113, %r112, 32640;
|
||||
- mad.lo.s32 %r114, %r105, -116, %r113;
|
||||
- mad.lo.s32 %r115, %r107, -12, %r114;
|
||||
- shr.u32 %r116, %r115, 8;
|
||||
- add.s32 %r117, %r116, 128;
|
||||
- st.global.u8 [%rd5+1], %r117;
|
||||
-
|
||||
-BB0_10:
|
||||
+ shl.b32 %r43, %r2, 1;
|
||||
+ and.b32 %r6, %r43, 65534;
|
||||
+ mul.lo.s32 %r44, %r6, %r5;
|
||||
+ mul.wide.u32 %rd9, %r44, 4;
|
||||
+ add.s64 %rd10, %rd1, %rd9;
|
||||
+ and.b32 %r7, %r42, 65534;
|
||||
+ cvt.u64.u32 %rd11, %r7;
|
||||
+ mul.wide.u32 %rd12, %r7, 4;
|
||||
+ add.s64 %rd3, %rd10, %rd12;
|
||||
+ cvt.u32.u16 %r45, %rs11;
|
||||
+ mul.lo.s32 %r46, %r6, %r45;
|
||||
+ cvt.u64.u32 %rd13, %r46;
|
||||
+ add.s64 %rd14, %rd2, %rd13;
|
||||
+ add.s64 %rd4, %rd14, %rd11;
|
||||
+ add.s32 %r47, %r46, %r45;
|
||||
+ cvt.u64.u32 %rd15, %r47;
|
||||
+ mul.lo.s32 %r48, %r45, %r4;
|
||||
+ cvt.u64.u32 %rd17, %r48;
|
||||
+ add.s64 %rd18, %rd2, %rd17;
|
||||
+ mul.lo.s32 %r49, %r3, %r45;
|
||||
+ cvt.u64.u32 %rd19, %r49;
|
||||
+ setp.ge.u32 %p3, %r7, %r5;
|
||||
+ cvt.u32.u16 %r9, %rs9;
|
||||
+ setp.ge.u32 %p4, %r6, %r9;
|
||||
+ mov.b32 %r98, 0;
|
||||
+ mov.b16 %rs25, 0;
|
||||
+ or.pred %p5, %p3, %p4;
|
||||
+ mov.u16 %rs24, %rs25;
|
||||
+ mov.u32 %r99, %r98;
|
||||
+ mov.u32 %r100, %r98;
|
||||
+ @%p5 bra $L__BB3_4;
|
||||
+// %bb.3:
|
||||
+ ld.global.u32 %r50, [%rd3];
|
||||
+ and.b32 %r100, %r50, 255;
|
||||
+ bfe.u32 %r99, %r50, 8, 8;
|
||||
+ bfe.u32 %r98, %r50, 16, 8;
|
||||
+ mul.lo.s32 %r51, %r100, 18;
|
||||
+ mad.lo.s32 %r52, %r98, 54, %r51;
|
||||
+ mad.lo.s32 %r53, %r99, 183, %r52;
|
||||
+ shr.u32 %r54, %r53, 8;
|
||||
+ cvt.u16.u32 %rs24, %r54;
|
||||
+$L__BB3_4:
|
||||
+ add.s64 %rd16, %rd2, %rd15;
|
||||
+ add.s64 %rd20, %rd18, %rd19;
|
||||
+ or.b32 %r8, %r6, 1;
|
||||
+ st.global.u8 [%rd4], %rs24;
|
||||
+ or.b32 %r16, %r7, 1;
|
||||
+ setp.ge.u32 %p7, %r16, %r5;
|
||||
+ or.pred %p8, %p7, %p4;
|
||||
+ @%p8 bra $L__BB3_6;
|
||||
+// %bb.5:
|
||||
+ ld.global.u32 %r57, [%rd3+4];
|
||||
+ and.b32 %r58, %r57, 255;
|
||||
+ add.s32 %r100, %r58, %r100;
|
||||
+ bfe.u32 %r59, %r57, 8, 8;
|
||||
+ add.s32 %r99, %r59, %r99;
|
||||
+ bfe.u32 %r60, %r57, 16, 8;
|
||||
+ add.s32 %r98, %r60, %r98;
|
||||
+ mul.lo.s32 %r61, %r58, 18;
|
||||
+ mad.lo.s32 %r62, %r60, 54, %r61;
|
||||
+ mad.lo.s32 %r63, %r59, 183, %r62;
|
||||
+ shr.u32 %r64, %r63, 8;
|
||||
+ cvt.u16.u32 %rs25, %r64;
|
||||
+$L__BB3_6:
|
||||
+ add.s64 %rd5, %rd16, %rd11;
|
||||
+ add.s64 %rd6, %rd20, %rd11;
|
||||
+ st.global.u8 [%rd4+1], %rs25;
|
||||
+ setp.ge.u32 %p10, %r8, %r9;
|
||||
+ or.pred %p11, %p3, %p10;
|
||||
+ @%p11 bra $L__BB3_9;
|
||||
+// %bb.7:
|
||||
+ mul.wide.u32 %rd21, %r5, 4;
|
||||
+ add.s64 %rd22, %rd3, %rd21;
|
||||
+ ld.global.u32 %r68, [%rd22];
|
||||
+ and.b32 %r69, %r68, 255;
|
||||
+ add.s32 %r100, %r69, %r100;
|
||||
+ bfe.u32 %r70, %r68, 8, 8;
|
||||
+ add.s32 %r99, %r70, %r99;
|
||||
+ bfe.u32 %r71, %r68, 16, 8;
|
||||
+ add.s32 %r98, %r71, %r98;
|
||||
+ mul.lo.s32 %r72, %r69, 18;
|
||||
+ mad.lo.s32 %r73, %r71, 54, %r72;
|
||||
+ mad.lo.s32 %r74, %r70, 183, %r73;
|
||||
+ shr.u32 %r75, %r74, 8;
|
||||
+ st.global.u8 [%rd5], %r75;
|
||||
+ mov.b16 %rs26, 0;
|
||||
+ @%p7 bra $L__BB3_10;
|
||||
+// %bb.8:
|
||||
+ add.s16 %rs1, %rs8, 1;
|
||||
+ cvt.u32.u16 %r76, %rs1;
|
||||
+ mul.wide.u32 %rd23, %r76, 4;
|
||||
+ add.s64 %rd24, %rd3, %rd23;
|
||||
+ ld.global.u32 %r77, [%rd24];
|
||||
+ and.b32 %r78, %r77, 255;
|
||||
+ add.s32 %r100, %r78, %r100;
|
||||
+ bfe.u32 %r79, %r77, 8, 8;
|
||||
+ add.s32 %r99, %r79, %r99;
|
||||
+ bfe.u32 %r80, %r77, 16, 8;
|
||||
+ add.s32 %r98, %r80, %r98;
|
||||
+ mul.lo.s32 %r81, %r78, 18;
|
||||
+ mad.lo.s32 %r82, %r80, 54, %r81;
|
||||
+ mad.lo.s32 %r83, %r79, 183, %r82;
|
||||
+ shr.u32 %r84, %r83, 8;
|
||||
+ cvt.u16.u32 %rs26, %r84;
|
||||
+ bra.uni $L__BB3_10;
|
||||
+$L__BB3_9:
|
||||
+ mov.b16 %rs26, 0;
|
||||
+ st.global.u8 [%rd5], %rs26;
|
||||
+$L__BB3_10:
|
||||
+ st.global.u8 [%rd5+1], %rs26;
|
||||
+ shr.u32 %r85, %r100, 2;
|
||||
+ shr.u32 %r86, %r99, 2;
|
||||
+ shr.u32 %r87, %r98, 2;
|
||||
+ mul.lo.s32 %r88, %r87, 65507;
|
||||
+ mad.lo.s32 %r89, %r86, 65437, %r88;
|
||||
+ shl.b32 %r90, %r85, 7;
|
||||
+ add.s32 %r91, %r89, %r90;
|
||||
+ cvt.u16.u32 %rs18, %r91;
|
||||
+ shr.u16 %rs19, %rs18, 8;
|
||||
+ xor.b16 %rs20, %rs19, 128;
|
||||
+ st.global.u8 [%rd6], %rs20;
|
||||
+ shl.b32 %r92, %r87, 7;
|
||||
+ mad.lo.s32 %r93, %r86, 65420, %r92;
|
||||
+ mad.lo.s32 %r94, %r85, 65524, %r93;
|
||||
+ cvt.u16.u32 %rs21, %r94;
|
||||
+ shr.u16 %rs22, %rs21, 8;
|
||||
+ xor.b16 %rs23, %rs22, 128;
|
||||
+ st.global.u8 [%rd6+1], %rs23;
|
||||
+$L__BB3_11:
|
||||
ret;
|
||||
+ // -- End function
|
||||
}
|
||||
-
|
||||
-
|
||||
diff --git a/src/grd-cuda-avc-utils.cu b/src/grd-cuda-avc-utils.cu
|
||||
index 7ce7f295..2f1e197d 100644
|
||||
--- a/src/grd-cuda-avc-utils.cu
|
||||
+++ b/src/grd-cuda-avc-utils.cu
|
||||
@@ -19,6 +19,10 @@
|
||||
|
||||
/*
|
||||
* Generate the PTX instructions with:
|
||||
+ * clang --cuda-gpu-arch=sm_30 -S src/grd-cuda-avc-utils.cu -o data/grd-cuda-avc-utils_30.ptx --no-cuda-version-check -O3 --cuda-device-only -Wall -Wextra
|
||||
+ *
|
||||
+ * or
|
||||
+ *
|
||||
* nvcc -arch=compute_30 -ptx grd-cuda-avc-utils.cu -o grd-cuda-avc-utils_30.ptx
|
||||
*
|
||||
* Note: This requires CUDA < 11, since the generation of Kepler capable
|
||||
@@ -29,24 +33,6 @@
|
||||
|
||||
extern "C"
|
||||
{
|
||||
- __device__ uint16_t
|
||||
- nv12_get_interlaced_y_1x1 (uint16_t y_1x1,
|
||||
- uint16_t aligned_height)
|
||||
- {
|
||||
- if (y_1x1 < aligned_height >> 1)
|
||||
- return y_1x1 << 1;
|
||||
- return (y_1x1 << 1) - aligned_height + 1;
|
||||
- }
|
||||
-
|
||||
- __device__ uint16_t
|
||||
- nv12_get_interlaced_y_2x2 (uint16_t y_2x2,
|
||||
- uint16_t aligned_height)
|
||||
- {
|
||||
- if (y_2x2 < aligned_height >> 2)
|
||||
- return y_2x2 << 1;
|
||||
- return (y_2x2 << 1) - (aligned_height >> 1) + 1;
|
||||
- }
|
||||
-
|
||||
__device__ uint8_t
|
||||
rgb_to_y (uint8_t r,
|
||||
uint8_t g,
|
||||
@@ -106,44 +92,17 @@ extern "C"
|
||||
s1 = 1;
|
||||
s2 = src_width;
|
||||
s3 = src_width + 1;
|
||||
- /*
|
||||
- * Technically, the correct positions for the Y data in the resulting NV12
|
||||
- * image would be the following:
|
||||
- *
|
||||
- * d0 = 0;
|
||||
- * d1 = 1;
|
||||
- * d2 = aligned_stride;
|
||||
- * d3 = aligned_stride + 1;
|
||||
- *
|
||||
- * However, since MBAFF is used as frame field mode, NVENC requires the input
|
||||
- * frame to be interlaced.
|
||||
- * If the frame is not interlaced, then even lines end up in the position
|
||||
- * y / 2, instead of y and odd lines end up in the position y / 2 +
|
||||
- * aligned_height / 2, instead of y.
|
||||
- * So, calculate the interlaced y position via a dedicated function, which
|
||||
- * ensures that the lines in the input frame end up in the resulting frame to
|
||||
- * be at the correct position.
|
||||
- * Doing this now in the kernel here, instead of after the BGRX -> YUV420
|
||||
- * conversion, saves a huge amount of time, since each thread only has a
|
||||
- * super tiny overhead to perform this action, while a normal
|
||||
- * device-to-device copy operation can take at least several milliseconds.
|
||||
- */
|
||||
|
||||
x_1x1 = x_2x2 << 1;
|
||||
y_1x1 = y_2x2 << 1;
|
||||
src_u32 = src_data + y_1x1 * src_width + x_1x1;
|
||||
|
||||
- dst_y0 = dst_data +
|
||||
- nv12_get_interlaced_y_1x1 (y_1x1, aligned_height) * aligned_stride +
|
||||
- x_1x1;
|
||||
+ dst_y0 = dst_data + y_1x1 * aligned_stride + x_1x1;
|
||||
dst_y1 = dst_y0 + 1;
|
||||
- dst_y2 = dst_data +
|
||||
- nv12_get_interlaced_y_1x1 (y_1x1 + 1, aligned_height) * aligned_stride +
|
||||
- x_1x1;
|
||||
+ dst_y2 = dst_data + (y_1x1 + 1) * aligned_stride + x_1x1;
|
||||
dst_y3 = dst_y2 + 1;
|
||||
dst_u = dst_data + aligned_height * aligned_stride +
|
||||
- nv12_get_interlaced_y_2x2 (y_2x2, aligned_height) * aligned_stride +
|
||||
- x_1x1;
|
||||
+ y_2x2 * aligned_stride + x_1x1;
|
||||
dst_v = dst_u + 1;
|
||||
|
||||
/* d_0 */
|
||||
diff --git a/src/grd-hwaccel-nvidia.c b/src/grd-hwaccel-nvidia.c
|
||||
index 76387635..b4640e02 100644
|
||||
--- a/src/grd-hwaccel-nvidia.c
|
||||
+++ b/src/grd-hwaccel-nvidia.c
|
||||
@@ -406,7 +406,7 @@ grd_hwaccel_nvidia_create_nvenc_session (GrdHwAccelNvidia *hwaccel_nvidia,
|
||||
encode_config.profileGUID = NV_ENC_H264_PROFILE_PROGRESSIVE_HIGH_GUID;
|
||||
encode_config.gopLength = NVENC_INFINITE_GOPLENGTH;
|
||||
encode_config.frameIntervalP = 1;
|
||||
- encode_config.frameFieldMode = NV_ENC_PARAMS_FRAME_FIELD_MODE_MBAFF;
|
||||
+ encode_config.frameFieldMode = NV_ENC_PARAMS_FRAME_FIELD_MODE_FRAME;
|
||||
encode_config.mvPrecision = NV_ENC_MV_PRECISION_QUARTER_PEL;
|
||||
encode_config.rcParams.version = NV_ENC_RC_PARAMS_VER;
|
||||
encode_config.rcParams.rateControlMode = NV_ENC_PARAMS_RC_VBR;
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
From 7a7a6d0757829f2efb2fc416b1ba55aa52216c4b Mon Sep 17 00:00:00 2001
|
||||
From 202114575558c4bd0573215ef0ce82deae9d9e73 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Mon, 26 May 2025 16:08:54 +0200
|
||||
Subject: [PATCH 01/13] control: Allow controlling all daemon types
|
||||
@ -57,10 +57,10 @@ index 858ab10a..284cb113 100644
|
||||
{
|
||||
g_warning ("Failed to register with application\n");
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From 8dcf988fb40ca328d685d3ca3cf2e7f5e2e19467 Mon Sep 17 00:00:00 2001
|
||||
From 1a627a3840de1a71f3a02860aeb3ef965b412f35 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Mon, 26 May 2025 16:09:45 +0200
|
||||
Subject: [PATCH 02/13] daemon: Use GError auto pointer
|
||||
@ -70,10 +70,10 @@ Subject: [PATCH 02/13] daemon: Use GError auto pointer
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/grd-daemon.c b/src/grd-daemon.c
|
||||
index b99f6181..2f6ed024 100644
|
||||
index c082c6b5..98954200 100644
|
||||
--- a/src/grd-daemon.c
|
||||
+++ b/src/grd-daemon.c
|
||||
@@ -986,7 +986,7 @@ main (int argc, char **argv)
|
||||
@@ -989,7 +989,7 @@ main (int argc, char **argv)
|
||||
};
|
||||
g_autoptr (GOptionContext) option_context = NULL;
|
||||
g_autoptr (GrdDaemon) daemon = NULL;
|
||||
@ -82,7 +82,7 @@ index b99f6181..2f6ed024 100644
|
||||
GrdRuntimeMode runtime_mode;
|
||||
|
||||
g_set_application_name (_("GNOME Remote Desktop"));
|
||||
@@ -996,7 +996,6 @@ main (int argc, char **argv)
|
||||
@@ -999,7 +999,6 @@ main (int argc, char **argv)
|
||||
if (!g_option_context_parse (option_context, &argc, &argv, &error))
|
||||
{
|
||||
g_printerr ("Invalid option: %s\n", error->message);
|
||||
@ -90,7 +90,7 @@ index b99f6181..2f6ed024 100644
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
@@ -1045,7 +1044,6 @@ main (int argc, char **argv)
|
||||
@@ -1048,7 +1047,6 @@ main (int argc, char **argv)
|
||||
if (!daemon)
|
||||
{
|
||||
g_printerr ("Failed to initialize: %s\n", error->message);
|
||||
@ -99,10 +99,10 @@ index b99f6181..2f6ed024 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From dfa19a9498f7245ac0ce3efd290dde1bdd8b865f Mon Sep 17 00:00:00 2001
|
||||
From ae398fb3a36a057af814312bfbd8d979120b8a27 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Mon, 26 May 2025 17:04:45 +0200
|
||||
Subject: [PATCH 03/13] rdp-server: Remove empty constructor vfunc
|
||||
@ -113,10 +113,10 @@ No need to implement it if it doesn't do anything.
|
||||
1 file changed, 7 deletions(-)
|
||||
|
||||
diff --git a/src/grd-rdp-server.c b/src/grd-rdp-server.c
|
||||
index 4fddfaa2..6ee93c5c 100644
|
||||
index c3124b8b..0ac486df 100644
|
||||
--- a/src/grd-rdp-server.c
|
||||
+++ b/src/grd-rdp-server.c
|
||||
@@ -470,12 +470,6 @@ grd_rdp_server_dispose (GObject *object)
|
||||
@@ -482,12 +482,6 @@ grd_rdp_server_dispose (GObject *object)
|
||||
G_OBJECT_CLASS (grd_rdp_server_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
@ -129,7 +129,7 @@ index 4fddfaa2..6ee93c5c 100644
|
||||
static void
|
||||
grd_rdp_server_init (GrdRdpServer *rdp_server)
|
||||
{
|
||||
@@ -498,7 +492,6 @@ grd_rdp_server_class_init (GrdRdpServerClass *klass)
|
||||
@@ -510,7 +504,6 @@ grd_rdp_server_class_init (GrdRdpServerClass *klass)
|
||||
object_class->set_property = grd_rdp_server_set_property;
|
||||
object_class->get_property = grd_rdp_server_get_property;
|
||||
object_class->dispose = grd_rdp_server_dispose;
|
||||
@ -138,10 +138,10 @@ index 4fddfaa2..6ee93c5c 100644
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_CONTEXT,
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From 0a5400d11a032ae0e1b9e75bc72915b892713a77 Mon Sep 17 00:00:00 2001
|
||||
From 0f5071b5fd8d690f2fa49c5bec4d86c907c39281 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 28 May 2025 14:08:12 +0200
|
||||
Subject: [PATCH 04/13] rdp-sam: Dup fd kept in struct
|
||||
@ -201,10 +201,10 @@ index 5898825a..bcadcb59 100644
|
||||
fclose (sam_file);
|
||||
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From 6a965f7c383a62e06a1dfb5033e7820ddff5c242 Mon Sep 17 00:00:00 2001
|
||||
From dfadd22d899a981804ff1b68358082ffb2bbe0c5 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 28 May 2025 22:33:54 +0200
|
||||
Subject: [PATCH 05/13] rdp-server: Set socket backlog count to 5
|
||||
@ -215,10 +215,10 @@ This limits the number of pending connections.
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/src/grd-rdp-server.c b/src/grd-rdp-server.c
|
||||
index 6ee93c5c..537d4e30 100644
|
||||
index 0ac486df..2691a65d 100644
|
||||
--- a/src/grd-rdp-server.c
|
||||
+++ b/src/grd-rdp-server.c
|
||||
@@ -35,6 +35,7 @@
|
||||
@@ -36,6 +36,7 @@
|
||||
|
||||
#define RDP_SERVER_N_BINDING_ATTEMPTS 10
|
||||
#define RDP_SERVER_BINDING_ATTEMPT_INTERVAL_MS 500
|
||||
@ -226,7 +226,7 @@ index 6ee93c5c..537d4e30 100644
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -302,6 +303,9 @@ bind_socket (GrdRdpServer *rdp_server,
|
||||
@@ -312,6 +313,9 @@ bind_socket (GrdRdpServer *rdp_server,
|
||||
uint16_t selected_rdp_port = 0;
|
||||
gboolean negotiate_port;
|
||||
|
||||
@ -237,10 +237,10 @@ index 6ee93c5c..537d4e30 100644
|
||||
"rdp-port", &rdp_port,
|
||||
"rdp-negotiate-port", &negotiate_port,
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From bc1ab53a393b886d3e5fae5b33efb8f2d3205fbc Mon Sep 17 00:00:00 2001
|
||||
From 1a5f6718c68695ec4221c530c0427061f2e50ac9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 28 May 2025 22:55:20 +0200
|
||||
Subject: [PATCH 06/13] utils: Add some time conversion helpers
|
||||
@ -251,13 +251,14 @@ Useful when converting between second, microseconds, etc.
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
diff --git a/src/grd-utils.h b/src/grd-utils.h
|
||||
index 6e433246..d9ae0801 100644
|
||||
index 30a3b9ec..099da563 100644
|
||||
--- a/src/grd-utils.h
|
||||
+++ b/src/grd-utils.h
|
||||
@@ -98,4 +98,22 @@ gboolean grd_systemd_unit_get_active_state (GDBusProxy *unit_pro
|
||||
@@ -99,3 +99,21 @@ gboolean grd_systemd_get_unit (GBusType bus_type,
|
||||
gboolean grd_systemd_unit_get_active_state (GDBusProxy *unit_proxy,
|
||||
GrdSystemdUnitActiveState *active_state,
|
||||
GError **error);
|
||||
|
||||
+
|
||||
+static inline int64_t
|
||||
+us (int64_t us)
|
||||
+{
|
||||
@ -275,13 +276,11 @@ index 6e433246..d9ae0801 100644
|
||||
+{
|
||||
+ return ms2us (s * 1000);
|
||||
+}
|
||||
+
|
||||
#endif /* GRD_UTILS_H */
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From 0f90337b241b200fc33565d49b6344e43d93bd0c Mon Sep 17 00:00:00 2001
|
||||
From 1abd4d5bb0840965a0a01d2230a8e0fa63768f52 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Mon, 30 Jun 2025 16:16:31 +0200
|
||||
Subject: [PATCH 07/13] utils: Add helper to close connection and notify
|
||||
@ -295,10 +294,10 @@ to date.
|
||||
2 files changed, 9 insertions(+)
|
||||
|
||||
diff --git a/src/grd-utils.c b/src/grd-utils.c
|
||||
index 9ded2092..20e6bffa 100644
|
||||
index 32739a93..bf208828 100644
|
||||
--- a/src/grd-utils.c
|
||||
+++ b/src/grd-utils.c
|
||||
@@ -461,3 +461,10 @@ grd_systemd_unit_get_active_state (GDBusProxy *unit_proxy,
|
||||
@@ -478,3 +478,10 @@ grd_systemd_unit_get_active_state (GDBusProxy *unit_proxy,
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -310,10 +309,10 @@ index 9ded2092..20e6bffa 100644
|
||||
+ g_object_notify (G_OBJECT (connection), "closed");
|
||||
+}
|
||||
diff --git a/src/grd-utils.h b/src/grd-utils.h
|
||||
index d9ae0801..eeb0a01c 100644
|
||||
index 099da563..4703db8f 100644
|
||||
--- a/src/grd-utils.h
|
||||
+++ b/src/grd-utils.h
|
||||
@@ -98,6 +98,8 @@ gboolean grd_systemd_unit_get_active_state (GDBusProxy *unit_pro
|
||||
@@ -100,6 +100,8 @@ gboolean grd_systemd_unit_get_active_state (GDBusProxy *unit_pro
|
||||
GrdSystemdUnitActiveState *active_state,
|
||||
GError **error);
|
||||
|
||||
@ -323,10 +322,10 @@ index d9ae0801..eeb0a01c 100644
|
||||
us (int64_t us)
|
||||
{
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From 4e09eee9a71e8da5bc1fb0fcaac999fc8efff953 Mon Sep 17 00:00:00 2001
|
||||
From 8dccf29b75560838843b0b373bcb6346548211c4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 28 May 2025 22:40:38 +0200
|
||||
Subject: [PATCH 08/13] Introduce throttler class
|
||||
@ -878,10 +877,10 @@ index 00000000..d57d653a
|
||||
+
|
||||
+#endif /* GRD_THROTTLER_H */
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index f92f9f1e..1e2cc69c 100644
|
||||
index 6b8b517e..3cc63c8b 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -72,6 +72,8 @@ daemon_sources = files([
|
||||
@@ -74,6 +74,8 @@ daemon_sources = files([
|
||||
'grd-settings-user.h',
|
||||
'grd-stream.c',
|
||||
'grd-stream.h',
|
||||
@ -891,10 +890,10 @@ index f92f9f1e..1e2cc69c 100644
|
||||
'grd-utils.c',
|
||||
'grd-utils.h',
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From 1dbffe778f0392a64c69152083290f125bfb450f Mon Sep 17 00:00:00 2001
|
||||
From f5e80ab4c6db6e15adebefc11d716f57af8e2eb3 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 28 May 2025 22:46:27 +0200
|
||||
Subject: [PATCH 09/13] rdp-server: Throttle connections using GrdThrottler
|
||||
@ -908,18 +907,18 @@ Related: CVE-2025-5024
|
||||
2 files changed, 29 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/grd-rdp-server.c b/src/grd-rdp-server.c
|
||||
index 537d4e30..228939b5 100644
|
||||
index 2691a65d..b8622a13 100644
|
||||
--- a/src/grd-rdp-server.c
|
||||
+++ b/src/grd-rdp-server.c
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "grd-context.h"
|
||||
#include "grd-hwaccel-nvidia.h"
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "grd-hwaccel-vulkan.h"
|
||||
#include "grd-rdp-routing-token.h"
|
||||
#include "grd-session-rdp.h"
|
||||
+#include "grd-throttler.h"
|
||||
#include "grd-utils.h"
|
||||
|
||||
#define RDP_SERVER_N_BINDING_ATTEMPTS 10
|
||||
@@ -59,6 +60,8 @@ struct _GrdRdpServer
|
||||
@@ -60,6 +61,8 @@ struct _GrdRdpServer
|
||||
{
|
||||
GSocketService parent;
|
||||
|
||||
@ -928,7 +927,7 @@ index 537d4e30..228939b5 100644
|
||||
GList *sessions;
|
||||
|
||||
GList *stopped_sessions;
|
||||
@@ -216,13 +219,25 @@ on_incoming (GSocketService *service,
|
||||
@@ -225,14 +228,26 @@ on_incoming (GSocketService *service,
|
||||
GSocketConnection *connection)
|
||||
{
|
||||
GrdRdpServer *rdp_server = GRD_RDP_SERVER (service);
|
||||
@ -950,13 +949,14 @@ index 537d4e30..228939b5 100644
|
||||
+ g_debug ("Creating new RDP session");
|
||||
|
||||
if (!(session_rdp = grd_session_rdp_new (rdp_server, connection,
|
||||
rdp_server->hwaccel_vulkan,
|
||||
rdp_server->hwaccel_nvidia)))
|
||||
- return TRUE;
|
||||
+ return;
|
||||
|
||||
rdp_server->sessions = g_list_append (rdp_server->sessions, session_rdp);
|
||||
|
||||
@@ -233,8 +248,6 @@ on_incoming (GSocketService *service,
|
||||
@@ -243,8 +258,6 @@ on_incoming (GSocketService *service,
|
||||
g_signal_connect (session_rdp, "post-connected",
|
||||
G_CALLBACK (on_session_post_connect),
|
||||
rdp_server);
|
||||
@ -965,7 +965,7 @@ index 537d4e30..228939b5 100644
|
||||
}
|
||||
|
||||
void
|
||||
@@ -410,6 +423,8 @@ grd_rdp_server_stop (GrdRdpServer *rdp_server)
|
||||
@@ -420,6 +433,8 @@ grd_rdp_server_stop (GrdRdpServer *rdp_server)
|
||||
g_clear_handle_id (&rdp_server->cleanup_sessions_idle_id, g_source_remove);
|
||||
grd_rdp_server_cleanup_stopped_sessions (rdp_server);
|
||||
|
||||
@ -974,15 +974,15 @@ index 537d4e30..228939b5 100644
|
||||
if (rdp_server->cancellable)
|
||||
{
|
||||
g_cancellable_cancel (rdp_server->cancellable);
|
||||
@@ -468,6 +483,7 @@ grd_rdp_server_dispose (GObject *object)
|
||||
@@ -479,6 +494,7 @@ grd_rdp_server_dispose (GObject *object)
|
||||
g_assert (!rdp_server->binding_timeout_source_id);
|
||||
g_assert (!rdp_server->cleanup_sessions_idle_id);
|
||||
g_assert (!rdp_server->stopped_sessions);
|
||||
+ g_assert (!rdp_server->throttler);
|
||||
|
||||
g_assert (!rdp_server->hwaccel_nvidia);
|
||||
|
||||
@@ -477,6 +493,9 @@ grd_rdp_server_dispose (GObject *object)
|
||||
g_assert (!rdp_server->hwaccel_vulkan);
|
||||
@@ -489,6 +505,9 @@ grd_rdp_server_dispose (GObject *object)
|
||||
static void
|
||||
grd_rdp_server_init (GrdRdpServer *rdp_server)
|
||||
{
|
||||
@ -993,18 +993,18 @@ index 537d4e30..228939b5 100644
|
||||
|
||||
winpr_InitializeSSL (WINPR_SSL_INIT_DEFAULT);
|
||||
diff --git a/src/grd-session-rdp.c b/src/grd-session-rdp.c
|
||||
index 3bf1fb7a..bdccc981 100644
|
||||
index cc026064..fcebadd1 100644
|
||||
--- a/src/grd-session-rdp.c
|
||||
+++ b/src/grd-session-rdp.c
|
||||
@@ -47,6 +47,7 @@
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "grd-rdp-server.h"
|
||||
#include "grd-rdp-session-metrics.h"
|
||||
#include "grd-rdp-telemetry.h"
|
||||
#include "grd-settings.h"
|
||||
+#include "grd-utils.h"
|
||||
|
||||
#define MAX_MONITOR_COUNT_HEADLESS 16
|
||||
#define MAX_MONITOR_COUNT_SCREEN_SHARE 1
|
||||
@@ -1577,6 +1578,7 @@ grd_session_rdp_stop (GrdSession *session)
|
||||
@@ -1635,6 +1636,7 @@ grd_session_rdp_stop (GrdSession *session)
|
||||
g_clear_object (&session_rdp->renderer);
|
||||
|
||||
peer->Close (peer);
|
||||
@ -1012,9 +1012,9 @@ index 3bf1fb7a..bdccc981 100644
|
||||
g_clear_object (&session_rdp->connection);
|
||||
|
||||
g_clear_object (&rdp_peer_context->network_autodetection);
|
||||
@@ -1761,6 +1763,10 @@ grd_session_rdp_dispose (GObject *object)
|
||||
g_clear_object (&session_rdp->layout_manager);
|
||||
@@ -1835,6 +1837,10 @@ grd_session_rdp_dispose (GObject *object)
|
||||
clear_rdp_peer (session_rdp);
|
||||
g_clear_object (&session_rdp->connection);
|
||||
|
||||
+ if (session_rdp->connection)
|
||||
+ grd_close_connection_and_notify (session_rdp->connection);
|
||||
@ -1024,10 +1024,10 @@ index 3bf1fb7a..bdccc981 100644
|
||||
|
||||
g_clear_object (&session_rdp->rdp_event_queue);
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From 61aa2a856d920ecc64abf38dfb1ca089f2626192 Mon Sep 17 00:00:00 2001
|
||||
From 13dfafb9b24964919a513f3d787101390697e62a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Fri, 30 May 2025 16:54:00 +0200
|
||||
Subject: [PATCH 10/13] throttler: Introduce limits struct
|
||||
@ -1042,10 +1042,10 @@ session at a time, replacing it's own existing condition.
|
||||
3 files changed, 67 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/src/grd-rdp-server.c b/src/grd-rdp-server.c
|
||||
index 228939b5..207d9e2d 100644
|
||||
index b8622a13..43eb2925 100644
|
||||
--- a/src/grd-rdp-server.c
|
||||
+++ b/src/grd-rdp-server.c
|
||||
@@ -493,7 +493,8 @@ grd_rdp_server_dispose (GObject *object)
|
||||
@@ -505,7 +505,8 @@ grd_rdp_server_dispose (GObject *object)
|
||||
static void
|
||||
grd_rdp_server_init (GrdRdpServer *rdp_server)
|
||||
{
|
||||
@ -1239,10 +1239,10 @@ index d57d653a..9e72b8f1 100644
|
||||
|
||||
#endif /* GRD_THROTTLER_H */
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From a0fa2c8afb072d2aa0886012925eccc36c2cdfb9 Mon Sep 17 00:00:00 2001
|
||||
From 296492022673e322df037c2fe9baa6b485887676 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Fri, 30 May 2025 16:55:46 +0200
|
||||
Subject: [PATCH 11/13] vnc-server: Hook up VNC server to the throttler
|
||||
@ -1255,7 +1255,7 @@ limiting the throttler to one accepted connection at any given time.
|
||||
2 files changed, 37 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
|
||||
index 6e118d88..8f4caec0 100644
|
||||
index 87cc7d86..ba0926f2 100644
|
||||
--- a/src/grd-session-vnc.c
|
||||
+++ b/src/grd-session-vnc.c
|
||||
@@ -34,6 +34,7 @@
|
||||
@ -1387,10 +1387,10 @@ index 2f8229b2..fc5020f0 100644
|
||||
|
||||
static void
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From 5ba32deb4fca13b0a56d724f1bf79c5c76c39154 Mon Sep 17 00:00:00 2001
|
||||
From a57cf99969a71a44eabca06fbf5e548310fcb9e4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Mon, 30 Jun 2025 16:01:12 +0200
|
||||
Subject: [PATCH 12/13] daemon: Add missing newline to error message
|
||||
@ -1400,10 +1400,10 @@ Subject: [PATCH 12/13] daemon: Add missing newline to error message
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/grd-daemon.c b/src/grd-daemon.c
|
||||
index 2f6ed024..2802bb1e 100644
|
||||
index 98954200..ea17df1d 100644
|
||||
--- a/src/grd-daemon.c
|
||||
+++ b/src/grd-daemon.c
|
||||
@@ -1007,7 +1007,7 @@ main (int argc, char **argv)
|
||||
@@ -1010,7 +1010,7 @@ main (int argc, char **argv)
|
||||
|
||||
if (count_trues (3, headless, system, handover) > 1)
|
||||
{
|
||||
@ -1413,10 +1413,10 @@ index 2f6ed024..2802bb1e 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
From e94d1dd3015df17e88a7ee78f45d79aadfd45be6 Mon Sep 17 00:00:00 2001
|
||||
From 97e2e5d6f42f102cdeec962ce83887a4920b1b48 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Mon, 30 Jun 2025 16:01:37 +0200
|
||||
Subject: [PATCH 13/13] throttler: Allow overriding hard coded parallel
|
||||
@ -1438,10 +1438,10 @@ number of open file descriptors to something adequate.
|
||||
7 files changed, 81 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/src/grd-daemon.c b/src/grd-daemon.c
|
||||
index 2802bb1e..c04475a7 100644
|
||||
index ea17df1d..7e1a0a34 100644
|
||||
--- a/src/grd-daemon.c
|
||||
+++ b/src/grd-daemon.c
|
||||
@@ -48,6 +48,8 @@
|
||||
@@ -49,6 +49,8 @@
|
||||
|
||||
#define RDP_SERVER_RESTART_DELAY_MS 3000
|
||||
|
||||
@ -1450,7 +1450,7 @@ index 2802bb1e..c04475a7 100644
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
@@ -91,6 +93,9 @@ typedef struct _GrdDaemonPrivate
|
||||
@@ -92,6 +94,9 @@ typedef struct _GrdDaemonPrivate
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (GrdDaemon, grd_daemon, G_TYPE_APPLICATION)
|
||||
|
||||
@ -1460,7 +1460,7 @@ index 2802bb1e..c04475a7 100644
|
||||
#ifdef HAVE_RDP
|
||||
static void maybe_start_rdp_server (GrdDaemon *daemon);
|
||||
#endif
|
||||
@@ -966,6 +971,7 @@ main (int argc, char **argv)
|
||||
@@ -969,6 +974,7 @@ main (int argc, char **argv)
|
||||
gboolean handover = FALSE;
|
||||
int rdp_port = -1;
|
||||
int vnc_port = -1;
|
||||
@ -1468,7 +1468,7 @@ index 2802bb1e..c04475a7 100644
|
||||
|
||||
GOptionEntry entries[] = {
|
||||
{ "version", 0, 0, G_OPTION_ARG_NONE, &print_version,
|
||||
@@ -982,6 +988,10 @@ main (int argc, char **argv)
|
||||
@@ -985,6 +991,10 @@ main (int argc, char **argv)
|
||||
"RDP port", NULL },
|
||||
{ "vnc-port", 0, 0, G_OPTION_ARG_INT, &vnc_port,
|
||||
"VNC port", NULL },
|
||||
@ -1479,7 +1479,7 @@ index 2802bb1e..c04475a7 100644
|
||||
{ NULL }
|
||||
};
|
||||
g_autoptr (GOptionContext) option_context = NULL;
|
||||
@@ -1011,6 +1021,17 @@ main (int argc, char **argv)
|
||||
@@ -1014,6 +1024,17 @@ main (int argc, char **argv)
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
@ -1497,7 +1497,7 @@ index 2802bb1e..c04475a7 100644
|
||||
if (headless)
|
||||
runtime_mode = GRD_RUNTIME_MODE_HEADLESS;
|
||||
else if (system)
|
||||
@@ -1057,5 +1078,8 @@ main (int argc, char **argv)
|
||||
@@ -1060,5 +1081,8 @@ main (int argc, char **argv)
|
||||
if (vnc_port != -1)
|
||||
grd_settings_override_vnc_port (settings, vnc_port);
|
||||
|
||||
@ -1507,10 +1507,10 @@ index 2802bb1e..c04475a7 100644
|
||||
return g_application_run (G_APPLICATION (daemon), argc, argv);
|
||||
}
|
||||
diff --git a/src/grd-rdp-server.c b/src/grd-rdp-server.c
|
||||
index 207d9e2d..b4952935 100644
|
||||
index 43eb2925..be1c315e 100644
|
||||
--- a/src/grd-rdp-server.c
|
||||
+++ b/src/grd-rdp-server.c
|
||||
@@ -491,11 +491,14 @@ grd_rdp_server_dispose (GObject *object)
|
||||
@@ -503,11 +503,14 @@ grd_rdp_server_dispose (GObject *object)
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1529,7 +1529,7 @@ index 207d9e2d..b4952935 100644
|
||||
|
||||
rdp_server->pending_binding_attempts = RDP_SERVER_N_BINDING_ATTEMPTS;
|
||||
|
||||
@@ -506,6 +509,13 @@ grd_rdp_server_init (GrdRdpServer *rdp_server)
|
||||
@@ -518,6 +521,13 @@ grd_rdp_server_init (GrdRdpServer *rdp_server)
|
||||
* Run the primitives benchmark here to save time, when initializing a session
|
||||
*/
|
||||
primitives_get ();
|
||||
@ -1543,7 +1543,7 @@ index 207d9e2d..b4952935 100644
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -516,6 +526,7 @@ grd_rdp_server_class_init (GrdRdpServerClass *klass)
|
||||
@@ -528,6 +538,7 @@ grd_rdp_server_class_init (GrdRdpServerClass *klass)
|
||||
object_class->set_property = grd_rdp_server_set_property;
|
||||
object_class->get_property = grd_rdp_server_get_property;
|
||||
object_class->dispose = grd_rdp_server_dispose;
|
||||
@ -1552,7 +1552,7 @@ index 207d9e2d..b4952935 100644
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_CONTEXT,
|
||||
diff --git a/src/grd-settings.c b/src/grd-settings.c
|
||||
index f3475010..0720fcc4 100644
|
||||
index a65385ef..46b8ad4b 100644
|
||||
--- a/src/grd-settings.c
|
||||
+++ b/src/grd-settings.c
|
||||
@@ -87,6 +87,8 @@ typedef struct _GrdSettingsPrivate
|
||||
@ -1589,10 +1589,10 @@ index f3475010..0720fcc4 100644
|
||||
grd_settings_override_rdp_port (GrdSettings *settings,
|
||||
int port)
|
||||
diff --git a/src/grd-settings.h b/src/grd-settings.h
|
||||
index 547b1417..5abf8e4e 100644
|
||||
index 6660b962..94dfd3b2 100644
|
||||
--- a/src/grd-settings.h
|
||||
+++ b/src/grd-settings.h
|
||||
@@ -38,6 +38,11 @@ struct _GrdSettingsClass
|
||||
@@ -37,6 +37,11 @@ struct _GrdSettingsClass
|
||||
|
||||
GrdRuntimeMode grd_settings_get_runtime_mode (GrdSettings *settings);
|
||||
|
||||
@ -1702,5 +1702,5 @@ index fc5020f0..705ed416 100644
|
||||
|
||||
static void
|
||||
--
|
||||
2.49.0
|
||||
2.51.0
|
||||
|
||||
|
||||
@ -1,3 +1,13 @@
|
||||
## START: Set by rpmautospec
|
||||
## (rpmautospec version 0.8.1)
|
||||
## RPMAUTOSPEC: autorelease, autochangelog
|
||||
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
|
||||
release_number = 3;
|
||||
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
|
||||
print(release_number + base_release_number - 1);
|
||||
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
|
||||
## END: Set by rpmautospec
|
||||
|
||||
%global systemd_unit_handover gnome-remote-desktop-handover.service
|
||||
%global systemd_unit_headless gnome-remote-desktop-headless.service
|
||||
%global systemd_unit_system gnome-remote-desktop.service
|
||||
@ -8,60 +18,69 @@
|
||||
%bcond rdp %[0%{?fedora} || 0%{?rhel} >= 10]
|
||||
%bcond vnc %[0%{?fedora} || 0%{?rhel} < 10]
|
||||
|
||||
%global libei_version 1.0.901
|
||||
%global pipewire_version 0.3.49
|
||||
%global libei_version 1.3.901
|
||||
%global pipewire_version 1.2.0
|
||||
|
||||
Name: gnome-remote-desktop
|
||||
Version: 47.3
|
||||
Release: 3%{?dist}
|
||||
Version: 49.3
|
||||
Release: %autorelease
|
||||
Summary: GNOME Remote Desktop screen share service
|
||||
|
||||
License: GPL-2.0-or-later
|
||||
URL: https://gitlab.gnome.org/GNOME/gnome-remote-desktop
|
||||
Source0: https://download.gnome.org/sources/%{name}/47/%{name}-%{tarball_version}.tar.xz
|
||||
Source0: https://download.gnome.org/sources/%{name}/49/%{name}-%{tarball_version}.tar.xz
|
||||
|
||||
# Adds encryption support (requires patched LibVNCServer)
|
||||
Patch0: gnutls-anontls.patch
|
||||
Patch1: connection-throttling.patch
|
||||
|
||||
# https://issues.redhat.com/browse/RHEL-146620
|
||||
Patch2: 0001-hwaccel-nvidia-Fix-image-corruptions-on-Blackwell-GP.patch
|
||||
# Depends on FreeRDP 3.15; drop this patch once FreeRDP is updated.
|
||||
Patch2: 0001-Patch-out-multi-touch-support.patch
|
||||
|
||||
# Support headless sessions started from gnome-headless-session@.service
|
||||
Patch3: 0001-daemon-system-Use-timeout_add_seconds_once-on-abort_.patch
|
||||
Patch4: 0001-daemon-handover-Move-callback-definitions-earlier-in.patch
|
||||
Patch5: 0001-daemon-system-Respect-existing-remote_id-from-third-.patch
|
||||
|
||||
BuildRequires: asciidoc
|
||||
BuildRequires: gcc
|
||||
BuildRequires: meson >= 0.47.0
|
||||
BuildRequires: meson >= 1.4.0
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: pkgconfig(cairo)
|
||||
BuildRequires: pkgconfig(epoxy)
|
||||
BuildRequires: pkgconfig(epoxy) >= 1.4
|
||||
BuildRequires: pkgconfig(dbus-1)
|
||||
BuildRequires: pkgconfig(ffnvcodec)
|
||||
BuildRequires: pkgconfig(ffnvcodec) >= 11.1.5.0
|
||||
%if %{with rdp}
|
||||
BuildRequires: pkgconfig(fdk-aac)
|
||||
BuildRequires: pkgconfig(freerdp3)
|
||||
BuildRequires: pkgconfig(fuse3)
|
||||
BuildRequires: pkgconfig(freerdp3) >= 3.10.0
|
||||
BuildRequires: pkgconfig(fuse3) >= 3.9.1
|
||||
BuildRequires: pkgconfig(opus)
|
||||
BuildRequires: pkgconfig(polkit-gobject-1)
|
||||
BuildRequires: pkgconfig(winpr3)
|
||||
BuildRequires: pkgconfig(polkit-gobject-1) >= 122
|
||||
BuildRequires: pkgconfig(winpr3) >= 3.10.0
|
||||
%endif
|
||||
BuildRequires: pkgconfig(gbm)
|
||||
BuildRequires: pkgconfig(glib-2.0) >= 2.68
|
||||
BuildRequires: pkgconfig(glib-2.0) >= 2.75.0
|
||||
BuildRequires: pkgconfig(gio-unix-2.0)
|
||||
BuildRequires: pkgconfig(gnutls)
|
||||
BuildRequires: pkgconfig(gudev-1.0)
|
||||
BuildRequires: pkgconfig(libdrm)
|
||||
BuildRequires: pkgconfig(libei-1.0) >= %{libei_version}
|
||||
BuildRequires: pkgconfig(libnotify)
|
||||
BuildRequires: pkgconfig(libpipewire-0.3)
|
||||
BuildRequires: pkgconfig(libpipewire-0.3) >= %{pipewire_version}
|
||||
BuildRequires: pkgconfig(libsecret-1)
|
||||
%if %{with vnc}
|
||||
BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7
|
||||
%endif
|
||||
BuildRequires: pkgconfig(systemd)
|
||||
BuildRequires: pkgconfig(xkbcommon)
|
||||
BuildRequires: pkgconfig(xkbcommon) >= 1.0.0
|
||||
BuildRequires: pkgconfig(tss2-esys)
|
||||
BuildRequires: pkgconfig(tss2-mu)
|
||||
BuildRequires: pkgconfig(tss2-rc)
|
||||
BuildRequires: pkgconfig(tss2-tctildr)
|
||||
BuildRequires: pkgconfig(libva)
|
||||
BuildRequires: pkgconfig(vulkan) >= 1.2.0
|
||||
BuildRequires: glslc
|
||||
BuildRequires: spirv-tools
|
||||
|
||||
Requires: libei%{?_isa} >= %{libei_version}
|
||||
Requires: pipewire%{?_isa} >= %{pipewire_version}
|
||||
@ -151,29 +170,52 @@ GNOME desktop environment.
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Feb 10 2026 Jonas Ådahl <jadahl@redhat.com> - 47.3-3
|
||||
- Fix image corruptions on NVIDIA Blackwell GPUs
|
||||
Resolves: RHEL-146620
|
||||
## START: Generated by rpmautospec
|
||||
* Wed May 06 2026 Joan Torres Lopez <joantolo@redhat.com> - 49.3-3
|
||||
- Support remote login to sessions from gnome-headless-session@.service
|
||||
|
||||
* Wed May 06 2026 Joan Torres Lopez <joantolo@redhat.com> - 49.3-2
|
||||
- Update version requirements after rebase to 49
|
||||
|
||||
* Mon Feb 16 2026 Jonas Ådahl <jadahl@redhat.com> - 49.3-1
|
||||
- Update to 49.3
|
||||
|
||||
* Fri Feb 13 2026 Jonas Ådahl <jadahl@redhat.com> - 49.2-1
|
||||
- Update to 49.2
|
||||
|
||||
* Fri Nov 14 2025 Jonas Ådahl <jadahl@redhat.com> - 49.1-3
|
||||
- Add missing build time dependencies
|
||||
|
||||
* Fri Nov 14 2025 Jonas Ådahl <jadahl@redhat.com> - 49.1-2
|
||||
- Patch out multi touch support
|
||||
|
||||
* Fri Nov 14 2025 Florian Müllner <fmuellner@redhat.com> - 49.1-1
|
||||
- Update to 49.1
|
||||
|
||||
* Tue Nov 11 2025 Florian Müllner <fmuellner@redhat.com> - 47.3-3
|
||||
- Switch to %%autorelease
|
||||
|
||||
* Thu Jul 03 2025 Jonas Ådahl <jadahl@redhat.com> - 47.3-2
|
||||
- Backport connection throttling
|
||||
Resolves: RHEL-92787
|
||||
|
||||
* Fri Jan 24 2025 Jiri Koten <jkoten@redhat.com> - 47.3-1
|
||||
* Tue Jan 28 2025 Jiri Koten <jkoten@redhat.com> - 47.3-1
|
||||
- Update to 47.3
|
||||
Resolves: RHEL-74559
|
||||
|
||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 47.alpha-2
|
||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 47.alpha-3
|
||||
- Bump release for October 2024 mass rebuild:
|
||||
Resolves: RHEL-64018
|
||||
|
||||
* Mon Jul 22 2024 Jonas Ådahl <jadahl@redhat.com> - 47~alpha-1
|
||||
- Update to 47.alpha
|
||||
Resolves: RHEL-50079
|
||||
* Thu Aug 01 2024 Tomas Pelka <tpelka@redhat.com> - 47.alpha-2
|
||||
- Add gating.yaml via API
|
||||
|
||||
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 46.2-2
|
||||
* Mon Jul 22 2024 Jonas Ådahl <jadahl@redhat.com> - 47.alpha-1
|
||||
- Rebase to 47.alpha
|
||||
|
||||
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 46.2-3
|
||||
- Bump release for June 2024 mass rebuild
|
||||
|
||||
* Mon May 27 2024 Nieves Montero <nmontero@redhat.com> - 46.2-2
|
||||
- Update to 46.2
|
||||
|
||||
* Thu May 23 2024 Nieves Montero <nmontero@redhat.com> - 46.2-1
|
||||
- Update to 46.2
|
||||
|
||||
@ -183,6 +225,9 @@ GNOME desktop environment.
|
||||
* Thu Mar 28 2024 Adam Williamson <awilliam@redhat.com> - 46.0-2
|
||||
- Correct systemd macros
|
||||
|
||||
* Tue Mar 26 2024 Jonas Ådahl <jadahl@redhat.com> - 46.0-1
|
||||
- Bump version to 46.0
|
||||
|
||||
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 45.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
@ -198,16 +243,22 @@ GNOME desktop environment.
|
||||
* Sat Oct 21 2023 Kalev Lember <klember@redhat.com> - 45.0-1
|
||||
- Update to 45.0
|
||||
|
||||
* Wed Sep 06 2023 Kalev Lember <klember@redhat.com> - 45.rc-2
|
||||
- Add minimum required libei version
|
||||
|
||||
* Tue Sep 05 2023 Kalev Lember <klember@redhat.com> - 45.rc-1
|
||||
- Update to 45.rc
|
||||
|
||||
* Fri Aug 11 2023 Kalev Lember <klember@redhat.com> - 45.beta-1
|
||||
- Update to 45.beta
|
||||
|
||||
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 45.alpha-2
|
||||
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 45.alpha-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Wed Jul 05 2023 Jonas Ådahl <jadahl@redhat.com> - 45~alpha-1
|
||||
* Wed Jul 05 2023 Jonas Ådahl <jadahl@redhat.com> - 45.alpha-2
|
||||
- Add missing function definition in TLS patch
|
||||
|
||||
* Wed Jul 05 2023 Jonas Ådahl <jadahl@redhat.com> - 45.alpha-1
|
||||
- Update to 45.alpha
|
||||
|
||||
* Wed May 31 2023 Kalev Lember <klember@redhat.com> - 44.2-1
|
||||
@ -240,26 +291,34 @@ GNOME desktop environment.
|
||||
* Thu Oct 27 2022 David King <amigadave@amigadave.com> - 43.1-1
|
||||
- Update to 43.1
|
||||
|
||||
* Tue Sep 20 2022 Jonas Ådahl <jadahl@redhat.com> - 43.0
|
||||
- Update to 43.0
|
||||
* Tue Sep 20 2022 Jonas Ådahl <jadahl@redhat.com> - 43.0-1
|
||||
- Bump version to 43.0
|
||||
|
||||
* Thu Aug 18 2022 Jonas Ådahl <jadahl@redhat.com> - 43~beta-4
|
||||
* Thu Aug 18 2022 Jonas Ådahl <jadahl@redhat.com> - 43~beta-6
|
||||
- Drop dependency on tpm2-abrmd
|
||||
|
||||
* Tue Aug 16 2022 Kalev Lember <klember@redhat.com> - 43~beta-3
|
||||
* Tue Aug 16 2022 Kalev Lember <klember@redhat.com> - 43~beta-5
|
||||
- Avoid manual requires on tss2* and rely on automatic soname deps instead
|
||||
|
||||
* Mon Aug 15 2022 Simone Caronni <negativo17@gmail.com> - 43~beta-2
|
||||
- Rebuild for updated FreeRDP.
|
||||
* Mon Aug 15 2022 Simone Caronni <negativo17@gmail.com> - 43~beta-4
|
||||
- Add missing build requirement
|
||||
|
||||
* Thu Aug 11 2022 Jonas Ådahl <jadahl@redhat.com> - 43~beta
|
||||
- Update to 43.beta
|
||||
* Mon Aug 15 2022 Simone Caronni <negativo17@gmail.com> - 43~beta-3
|
||||
- Rebuild for updated FreeRDP
|
||||
|
||||
* Fri Jul 29 2022 Tomas Popela <tpopela@redhat.com> - 43~alpha-2
|
||||
- FreeRDP is built without server support in RHEL and ELN so we should disable
|
||||
the RDP there
|
||||
* Thu Aug 11 2022 Jonas Ådahl <jadahl@redhat.com> - 43~beta-2
|
||||
- Fix typo
|
||||
|
||||
* Thu Jul 28 2022 Jonas Ådahl <jadahl@redhat.com> - 43~alpha
|
||||
* Thu Aug 11 2022 Jonas Ådahl <jadahl@redhat.com> - 43~beta-1
|
||||
- Bump version to gnome-remote-desktop-43.beta
|
||||
|
||||
* Fri Jul 29 2022 Tomas Popela <tpopela@redhat.com> - 43~alpha-3
|
||||
- Don't enable RDP support in ELN/RHEL 9+
|
||||
|
||||
* Thu Jul 28 2022 Jonas Ådahl <jadahl@redhat.com> - 43~alpha-2
|
||||
- README -> README.md
|
||||
|
||||
* Thu Jul 28 2022 Jonas Ådahl <jadahl@redhat.com> - 43~alpha-1
|
||||
- Update to 43.alpha
|
||||
|
||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 42.3-2
|
||||
@ -274,18 +333,39 @@ GNOME desktop environment.
|
||||
* Wed May 11 2022 David King <amigadave@amigadave.com> - 42.1.1-1
|
||||
- Update to 42.1.1 (#2061546)
|
||||
|
||||
* Wed Apr 27 2022 David King <amigadave@amigadave.com> - 42.1-3
|
||||
- Update sources
|
||||
|
||||
* Wed Apr 27 2022 David King <amigadave@amigadave.com> - 42.1-2
|
||||
- Fix isa macro in Requires
|
||||
|
||||
* Tue Apr 26 2022 David King <amigadave@amigadave.com> - 42.1-1
|
||||
- Update to 42.1 (#2061546)
|
||||
|
||||
* Mon Mar 21 2022 Jonas Ådahl <jadahl@redhat.com> - 42.0
|
||||
* Mon Mar 21 2022 Jonas Ådahl <jadahl@redhat.com> - 42.0-1
|
||||
- Update to 42.0
|
||||
|
||||
* Mon Mar 14 2022 Jonas Ådahl <jadahl@redhat.com> - 42~rc-5
|
||||
- Fix path to man page
|
||||
|
||||
* Mon Mar 14 2022 Jonas Ådahl <jadahl@redhat.com> - 42~rc-4
|
||||
- Fix path to grdctl
|
||||
|
||||
* Mon Mar 14 2022 Jonas Ådahl <jadahl@redhat.com> - 42~rc-3
|
||||
- Add missing patch
|
||||
|
||||
* Mon Mar 14 2022 Jonas Ådahl <jadahl@redhat.com> - 42~rc-2
|
||||
- Add man page
|
||||
|
||||
* Mon Mar 14 2022 Jonas Ådahl <jadahl@redhat.com> - 42~rc-1
|
||||
- Update to 42.rc
|
||||
|
||||
* Wed Feb 16 2022 Jonas Ådahl <jadahl@redhat.com> - 42~beta-3
|
||||
- Add build requirements needed for tests
|
||||
|
||||
* Wed Feb 16 2022 Jonas Ådahl <jadahl@redhat.com> - 42~beta-2
|
||||
- Add missing added dependencies
|
||||
|
||||
* Wed Feb 16 2022 Jonas Ådahl <jadahl@redhat.com> - 42~beta-1
|
||||
- Update to 42.beta
|
||||
|
||||
@ -301,9 +381,18 @@ GNOME desktop environment.
|
||||
* Mon Sep 20 2021 Kalev Lember <klember@redhat.com> - 41.0-1
|
||||
- Update to 41.0
|
||||
|
||||
* Wed Sep 08 2021 Kalev Lember <klember@redhat.com> - 41~rc-2
|
||||
- Fix the build
|
||||
|
||||
* Tue Sep 07 2021 Jonas Ådahl <jadahl@redhat.com> - 41~rc-1
|
||||
- Bump to 41.rc
|
||||
|
||||
* Wed Aug 04 2021 Kalev Lember <klember@redhat.com> - 40.1-5
|
||||
- Bump release
|
||||
|
||||
* Wed Aug 04 2021 Kalev Lember <klember@redhat.com> - 40.1-4
|
||||
- Remove old, unused tarball from sources file
|
||||
|
||||
* Wed Aug 04 2021 Kalev Lember <klember@redhat.com> - 40.1-3
|
||||
- Avoid systemd_requires as per updated packaging guidelines
|
||||
|
||||
@ -313,87 +402,43 @@ GNOME desktop environment.
|
||||
* Mon May 03 2021 Jonas Ådahl <jadahl@redhat.com> - 40.1-1
|
||||
- Bump to 40.1
|
||||
|
||||
* Thu Apr 15 2021 Simone Caronni <negativo17@gmail.com> - 40.0-2
|
||||
- Rebuild for updated FreeRDP.
|
||||
* Thu Apr 15 2021 Simone Caronni <negativo17@gmail.com> - 40.0-3
|
||||
- Rebuild for updated FreeRDP
|
||||
|
||||
* Mon Mar 22 2021 Kalev Lember <klember@redhat.com> - 40.0-2
|
||||
- Use macro for converting between GNOME and Fedora pre-release versioning
|
||||
|
||||
* Mon Mar 22 2021 Kalev Lember <klember@redhat.com> - 40.0-1
|
||||
- Update to 40.0
|
||||
|
||||
* Thu Mar 18 2021 Michael Catanzaro <mcatanzaro@redhat.com> - 40.0~rc-2
|
||||
* Thu Mar 18 2021 Michael Catanzaro <mcatanzaro@gnome.org> - 40.0~rc-2
|
||||
- Add Obsoletes: vino
|
||||
|
||||
* Mon Mar 15 2021 Kalev Lember <klember@redhat.com> - 40.0~rc-1
|
||||
- Update to 40.rc
|
||||
|
||||
* Thu Mar 04 2021 Jonas Ådahl <jadahl@redhat.com> - 40.0~beta-1
|
||||
* Mon Mar 15 2021 Kalev Lember <klember@redhat.com> - 40.0~beta-2
|
||||
- Fix rpmbuild changelog chronological order warning
|
||||
|
||||
* Fri Mar 05 2021 Jonas Ådahl <jadahl@redhat.com> - 40.0~beta-1
|
||||
- Bump to 40.beta
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.9-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Mon Sep 14 2020 Jonas Ådahl <jadahl@redhat.com> - 0.1.9-2
|
||||
* Mon Oct 12 2020 Jonas Ådahl <jadahl@redhat.com> - 0.1.9-2
|
||||
- Copy using the right destination stride
|
||||
|
||||
* Mon Sep 14 2020 Jonas Ådahl <jadahl@redhat.com> - 0.1.9-1
|
||||
- Update gnome-remote-desktop
|
||||
- Update to 0.1.9
|
||||
- Backport race condition crash fix
|
||||
- Rebase anon-tls patches
|
||||
- Cleanup left-over patches
|
||||
|
||||
* Thu Aug 27 2020 Ray Strode <rstrode@redhat.com> - 0.1.8-3
|
||||
- Fix crash
|
||||
Related: #1844993
|
||||
* Thu Aug 27 2020 Ray Strode <rstrode@redhat.com> - 0.1.8-6
|
||||
- add missing changelog entry
|
||||
|
||||
* Mon Jun 1 2020 Felipe Borges <feborges@redhat.com> - 0.1.8-2
|
||||
- Fix black screen issue in remote connections on Wayland
|
||||
|
||||
* Wed Mar 11 2020 Jonas Ådahl <jadahl@redhat.com> - 0.1.8-1
|
||||
- Update to 0.1.8
|
||||
|
||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.7-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.7-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Mon Mar 4 2019 Jonas Ådahl <jadahl@redhat.com> - 0.1.7-1
|
||||
- Update to 0.1.7
|
||||
|
||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.6-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Tue Oct 2 2018 Jonas Ådahl <jadahl@redhat.com> - 0.1.6-2
|
||||
- Don't crash when PipeWire disconnects (rhbz#1632781)
|
||||
|
||||
* Tue Aug 7 2018 Jonas Ådahl <jadahl@redhat.com> - 0.1.6
|
||||
- Update to 0.1.6
|
||||
- Apply ANON-TLS patch
|
||||
- Depend on pipewire 0.2.2
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.4-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Wed May 30 2018 Jonas Ådahl <jadahl@redhat.com> - 0.1.4-1
|
||||
- Update to new version
|
||||
|
||||
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.1.2-5
|
||||
- Escape macros in %%changelog
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.2-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Tue Aug 29 2017 Jonas Ådahl <jadahl@redhat.com> - 0.1.2-3
|
||||
- Use %%autosetup
|
||||
- Install licence file
|
||||
|
||||
* Tue Aug 22 2017 Jonas Ådahl <jadahl@redhat.com> - 0.1.2-2
|
||||
- Remove gschema compilation step as that had been deprecated
|
||||
|
||||
* Mon Aug 21 2017 Jonas Ådahl <jadahl@redhat.com> - 0.1.2-1
|
||||
- Update to 0.1.2
|
||||
- Changed tabs to spaces
|
||||
- Added systemd user macros
|
||||
- Install to correct systemd user unit directory
|
||||
- Compile gsettings schemas after install and uninstall
|
||||
|
||||
* Mon Aug 21 2017 Jonas Ådahl <jadahl@redhat.com> - 0.1.1-1
|
||||
- First packaged version
|
||||
* Thu Aug 27 2020 Ray Strode <rstrode@redhat.com> - 0.1.8-5
|
||||
- RPMAUTOSPEC: unresolvable merge
|
||||
## END: Generated by rpmautospec
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
From 0e754e3a90f486c031da535656584673016107a3 Mon Sep 17 00:00:00 2001
|
||||
From 4ff83656fc686045c6ba2e3d7e48cb1030c0a15c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Thu, 14 Jun 2018 12:21:37 +0200
|
||||
Subject: [PATCH 1/7] vnc: Add anonymous TLS encryption support
|
||||
@ -12,7 +12,7 @@ VNC connection.
|
||||
meson.build | 1 +
|
||||
src/grd-enums.h | 6 +
|
||||
src/grd-session-vnc.c | 120 ++++-
|
||||
src/grd-session-vnc.h | 17 +
|
||||
src/grd-session-vnc.h | 19 +
|
||||
src/grd-settings-user.c | 3 +
|
||||
src/grd-settings.c | 18 +
|
||||
src/grd-vnc-server.c | 49 ++
|
||||
@ -20,15 +20,15 @@ VNC connection.
|
||||
src/grd-vnc-tls.h | 28 ++
|
||||
src/meson.build | 3 +
|
||||
...nome.desktop.remote-desktop.gschema.xml.in | 10 +
|
||||
11 files changed, 673 insertions(+), 26 deletions(-)
|
||||
11 files changed, 675 insertions(+), 26 deletions(-)
|
||||
create mode 100644 src/grd-vnc-tls.c
|
||||
create mode 100644 src/grd-vnc-tls.h
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 995863ce..40733a6e 100644
|
||||
index 5dcb77c..269238c 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -62,6 +62,7 @@ endif
|
||||
@@ -70,6 +70,7 @@ endif
|
||||
if have_vnc
|
||||
libvncclient_dep = dependency('libvncclient')
|
||||
libvncserver_dep = dependency('libvncserver')
|
||||
@ -37,10 +37,10 @@ index 995863ce..40733a6e 100644
|
||||
|
||||
prefix = get_option('prefix')
|
||||
diff --git a/src/grd-enums.h b/src/grd-enums.h
|
||||
index 028bdf9a..47a1d921 100644
|
||||
index 25b4266..f443876 100644
|
||||
--- a/src/grd-enums.h
|
||||
+++ b/src/grd-enums.h
|
||||
@@ -33,6 +33,12 @@ typedef enum
|
||||
@@ -32,6 +32,12 @@ typedef enum
|
||||
GRD_VNC_AUTH_METHOD_PASSWORD
|
||||
} GrdVncAuthMethod;
|
||||
|
||||
@ -54,7 +54,7 @@ index 028bdf9a..47a1d921 100644
|
||||
{
|
||||
GRD_VNC_SCREEN_SHARE_MODE_MIRROR_PRIMARY,
|
||||
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
|
||||
index 0ca76e89..e13ac013 100644
|
||||
index f7e1408..b5e4fe1 100644
|
||||
--- a/src/grd-session-vnc.c
|
||||
+++ b/src/grd-session-vnc.c
|
||||
@@ -46,7 +46,9 @@ struct _GrdSessionVnc
|
||||
@ -248,10 +248,10 @@ index 0ca76e89..e13ac013 100644
|
||||
|
||||
G_OBJECT_CLASS (grd_session_vnc_parent_class)->dispose (object);
|
||||
diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h
|
||||
index be79cf4a..ffc8d27a 100644
|
||||
index 8fc7185..7150049 100644
|
||||
--- a/src/grd-session-vnc.h
|
||||
+++ b/src/grd-session-vnc.h
|
||||
@@ -37,6 +37,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc,
|
||||
@@ -36,6 +36,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc,
|
||||
GRD, SESSION_VNC,
|
||||
GrdSession)
|
||||
|
||||
@ -261,7 +261,7 @@ index be79cf4a..ffc8d27a 100644
|
||||
GrdSessionVnc *grd_session_vnc_new (GrdVncServer *vnc_server,
|
||||
GSocketConnection *connection);
|
||||
|
||||
@@ -63,6 +66,20 @@ void grd_session_vnc_set_client_clipboard_text (GrdSessionVnc *session_vnc,
|
||||
@@ -62,4 +65,20 @@ void grd_session_vnc_set_client_clipboard_text (GrdSessionVnc *session_vnc,
|
||||
int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
|
||||
int width);
|
||||
|
||||
@ -270,7 +270,7 @@ index be79cf4a..ffc8d27a 100644
|
||||
+int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc);
|
||||
+
|
||||
gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc);
|
||||
|
||||
+
|
||||
+rfbClientPtr grd_session_vnc_get_rfb_client (GrdSessionVnc *session_vnc);
|
||||
+
|
||||
+void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc,
|
||||
@ -281,23 +281,23 @@ index be79cf4a..ffc8d27a 100644
|
||||
+
|
||||
+GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc);
|
||||
+
|
||||
#endif /* GRD_SESSION_VNC_H */
|
||||
+#endif /* GRD_SESSION_VNC_H */
|
||||
diff --git a/src/grd-settings-user.c b/src/grd-settings-user.c
|
||||
index 20b81a94..34115078 100644
|
||||
index 1bd679e..9420516 100644
|
||||
--- a/src/grd-settings-user.c
|
||||
+++ b/src/grd-settings-user.c
|
||||
@@ -79,6 +79,9 @@ grd_settings_user_constructed (GObject *object)
|
||||
g_settings_bind (settings->vnc_settings, "auth-method",
|
||||
settings, "vnc-auth-method",
|
||||
@@ -91,6 +91,9 @@ grd_settings_user_constructed (GObject *object)
|
||||
g_settings_bind (settings->vnc_settings, "screen-share-mode",
|
||||
settings, "vnc-screen-share-mode",
|
||||
G_SETTINGS_BIND_DEFAULT);
|
||||
+ g_settings_bind (settings->vnc_settings, "encryption",
|
||||
+ settings, "vnc-encryption",
|
||||
+ G_SETTINGS_BIND_DEFAULT);
|
||||
|
||||
switch (grd_settings_get_runtime_mode (GRD_SETTINGS (settings)))
|
||||
{
|
||||
G_OBJECT_CLASS (grd_settings_user_parent_class)->constructed (object);
|
||||
}
|
||||
diff --git a/src/grd-settings.c b/src/grd-settings.c
|
||||
index fba1d714..f3475010 100644
|
||||
index 8393ace..a65385e 100644
|
||||
--- a/src/grd-settings.c
|
||||
+++ b/src/grd-settings.c
|
||||
@@ -58,6 +58,7 @@ enum
|
||||
@ -316,7 +316,7 @@ index fba1d714..f3475010 100644
|
||||
} vnc;
|
||||
} GrdSettingsPrivate;
|
||||
|
||||
@@ -425,6 +427,9 @@ grd_settings_get_property (GObject *object,
|
||||
@@ -426,6 +428,9 @@ grd_settings_get_property (GObject *object,
|
||||
else
|
||||
g_value_set_enum (value, priv->vnc.auth_method);
|
||||
break;
|
||||
@ -326,7 +326,7 @@ index fba1d714..f3475010 100644
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
}
|
||||
@@ -562,6 +567,9 @@ grd_settings_set_property (GObject *object,
|
||||
@@ -563,6 +568,9 @@ grd_settings_set_property (GObject *object,
|
||||
case PROP_VNC_AUTH_METHOD:
|
||||
priv->vnc.auth_method = g_value_get_enum (value);
|
||||
break;
|
||||
@ -336,7 +336,7 @@ index fba1d714..f3475010 100644
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
}
|
||||
@@ -743,4 +751,14 @@ grd_settings_class_init (GrdSettingsClass *klass)
|
||||
@@ -744,4 +752,14 @@ grd_settings_class_init (GrdSettingsClass *klass)
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT |
|
||||
G_PARAM_STATIC_STRINGS));
|
||||
@ -352,7 +352,7 @@ index fba1d714..f3475010 100644
|
||||
+ G_PARAM_STATIC_STRINGS));
|
||||
}
|
||||
diff --git a/src/grd-vnc-server.c b/src/grd-vnc-server.c
|
||||
index 877272d2..59a13db5 100644
|
||||
index 8322065..2f8229b 100644
|
||||
--- a/src/grd-vnc-server.c
|
||||
+++ b/src/grd-vnc-server.c
|
||||
@@ -24,6 +24,7 @@
|
||||
@ -417,7 +417,7 @@ index 877272d2..59a13db5 100644
|
||||
gboolean
|
||||
grd_vnc_server_start (GrdVncServer *vnc_server,
|
||||
GError **error)
|
||||
@@ -241,11 +282,19 @@ grd_vnc_server_dispose (GObject *object)
|
||||
@@ -242,11 +283,19 @@ grd_vnc_server_dispose (GObject *object)
|
||||
static void
|
||||
grd_vnc_server_constructed (GObject *object)
|
||||
{
|
||||
@ -439,7 +439,7 @@ index 877272d2..59a13db5 100644
|
||||
|
||||
diff --git a/src/grd-vnc-tls.c b/src/grd-vnc-tls.c
|
||||
new file mode 100644
|
||||
index 00000000..ec4758e0
|
||||
index 0000000..ec4758e
|
||||
--- /dev/null
|
||||
+++ b/src/grd-vnc-tls.c
|
||||
@@ -0,0 +1,444 @@
|
||||
@ -889,7 +889,7 @@ index 00000000..ec4758e0
|
||||
+}
|
||||
diff --git a/src/grd-vnc-tls.h b/src/grd-vnc-tls.h
|
||||
new file mode 100644
|
||||
index 00000000..135ef8c7
|
||||
index 0000000..135ef8c
|
||||
--- /dev/null
|
||||
+++ b/src/grd-vnc-tls.h
|
||||
@@ -0,0 +1,28 @@
|
||||
@ -922,10 +922,10 @@ index 00000000..135ef8c7
|
||||
+
|
||||
+#endif /* GRD_VNC_TLS_H */
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index 914e2cc1..4e820c59 100644
|
||||
index 1b2cb93..6b8b517 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -188,10 +188,13 @@ if have_vnc
|
||||
@@ -274,10 +274,13 @@ if have_vnc
|
||||
'grd-vnc-pipewire-stream.h',
|
||||
'grd-vnc-server.c',
|
||||
'grd-vnc-server.h',
|
||||
@ -940,10 +940,10 @@ index 914e2cc1..4e820c59 100644
|
||||
endif
|
||||
|
||||
diff --git a/src/org.gnome.desktop.remote-desktop.gschema.xml.in b/src/org.gnome.desktop.remote-desktop.gschema.xml.in
|
||||
index c3d583c1..8a736c82 100644
|
||||
index 2986a0e..a016978 100644
|
||||
--- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in
|
||||
+++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in
|
||||
@@ -148,5 +148,15 @@
|
||||
@@ -173,6 +173,16 @@
|
||||
configuration updates.
|
||||
</description>
|
||||
</key>
|
||||
@ -958,12 +958,13 @@ index c3d583c1..8a736c82 100644
|
||||
+ </description>
|
||||
+ </key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
<schema id='org.gnome.desktop.remote-desktop.vnc.headless' path='/org/gnome/desktop/remote-desktop/vnc/headless/'>
|
||||
<key name='port' type='q'>
|
||||
--
|
||||
2.44.0
|
||||
2.51.1
|
||||
|
||||
|
||||
From 6e5f6deab459acdd1e7785ab6975932f2815548f Mon Sep 17 00:00:00 2001
|
||||
From 35e5aebd1c0fcba3e896061b9d1284e3ba5703fe Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 27 Nov 2019 11:02:09 +0100
|
||||
Subject: [PATCH 2/7] session-vnc: Add paused/resumed signals
|
||||
@ -976,7 +977,7 @@ out-of-socket source.
|
||||
1 file changed, 65 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
|
||||
index e13ac013..30820d7d 100644
|
||||
index b5e4fe1..79de30d 100644
|
||||
--- a/src/grd-session-vnc.c
|
||||
+++ b/src/grd-session-vnc.c
|
||||
@@ -42,14 +42,27 @@
|
||||
@ -1109,9 +1110,9 @@ index e13ac013..30820d7d 100644
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1020,4 +1065,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass)
|
||||
session_class->remote_desktop_session_started =
|
||||
grd_session_vnc_remote_desktop_session_started;
|
||||
@@ -1021,4 +1066,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass)
|
||||
|
||||
session_class->stop = grd_session_vnc_stop;
|
||||
session_class->on_stream_created = grd_session_vnc_on_stream_created;
|
||||
+
|
||||
+ signals[PAUSED] = g_signal_new ("paused",
|
||||
@ -1128,10 +1129,10 @@ index e13ac013..30820d7d 100644
|
||||
+ G_TYPE_NONE, 0);
|
||||
}
|
||||
--
|
||||
2.44.0
|
||||
2.51.1
|
||||
|
||||
|
||||
From 00f4fdfc676361f5f71e6f6b346c11cb7088b836 Mon Sep 17 00:00:00 2001
|
||||
From 945d0fc9a43dbc39fd0eb4a11f18351186bdbe44 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 27 Nov 2019 11:03:46 +0100
|
||||
Subject: [PATCH 3/7] session-vnc: Add grd_session_vnc_dispatch() helper
|
||||
@ -1144,7 +1145,7 @@ available that is not visible to the socket source.
|
||||
2 files changed, 18 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
|
||||
index 30820d7d..3ee06f79 100644
|
||||
index 79de30d..b48b901 100644
|
||||
--- a/src/grd-session-vnc.c
|
||||
+++ b/src/grd-session-vnc.c
|
||||
@@ -771,6 +771,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc,
|
||||
@ -1188,10 +1189,10 @@ index 30820d7d..3ee06f79 100644
|
||||
else
|
||||
{
|
||||
diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h
|
||||
index ffc8d27a..a86d61d2 100644
|
||||
index 7150049..e6c37d9 100644
|
||||
--- a/src/grd-session-vnc.h
|
||||
+++ b/src/grd-session-vnc.h
|
||||
@@ -80,6 +80,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc,
|
||||
@@ -79,6 +79,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc,
|
||||
void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc,
|
||||
GrdVncSocketGrabFunc grab_func);
|
||||
|
||||
@ -1201,10 +1202,10 @@ index ffc8d27a..a86d61d2 100644
|
||||
|
||||
#endif /* GRD_SESSION_VNC_H */
|
||||
--
|
||||
2.44.0
|
||||
2.51.1
|
||||
|
||||
|
||||
From 69efe6df5e9e8548c0241a612980af31f1dc5c5a Mon Sep 17 00:00:00 2001
|
||||
From 0ded23554e4f5fd8e45358f5a2b1126737d0d7ee Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 27 Nov 2019 11:05:13 +0100
|
||||
Subject: [PATCH 4/7] vnc/tls: Add some logging
|
||||
@ -1216,7 +1217,7 @@ protocol rather than the session itself.
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/src/grd-vnc-tls.c b/src/grd-vnc-tls.c
|
||||
index ec4758e0..ac6c35f6 100644
|
||||
index ec4758e..ac6c35f 100644
|
||||
--- a/src/grd-vnc-tls.c
|
||||
+++ b/src/grd-vnc-tls.c
|
||||
@@ -67,6 +67,7 @@ grd_vnc_tls_context_new (void)
|
||||
@ -1278,10 +1279,10 @@ index ec4758e0..ac6c35f6 100644
|
||||
{
|
||||
g_warning ("TLS handshake failed: %s", error->message);
|
||||
--
|
||||
2.44.0
|
||||
2.51.1
|
||||
|
||||
|
||||
From 2a11c4f47165b62409f4428b9de1bda59c6ebb2f Mon Sep 17 00:00:00 2001
|
||||
From 55f1f049d3884e48e579597bc5f3b62d6bb24753 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 27 Nov 2019 11:07:40 +0100
|
||||
Subject: [PATCH 5/7] vnc/tls: Dispatch also when data is pending outside of
|
||||
@ -1298,10 +1299,10 @@ long as there is data to read in those buffers.
|
||||
2 files changed, 86 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h
|
||||
index a86d61d2..5db388b0 100644
|
||||
index e6c37d9..778e497 100644
|
||||
--- a/src/grd-session-vnc.h
|
||||
+++ b/src/grd-session-vnc.h
|
||||
@@ -80,6 +80,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc,
|
||||
@@ -79,6 +79,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc,
|
||||
void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc,
|
||||
GrdVncSocketGrabFunc grab_func);
|
||||
|
||||
@ -1311,7 +1312,7 @@ index a86d61d2..5db388b0 100644
|
||||
|
||||
GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc);
|
||||
diff --git a/src/grd-vnc-tls.c b/src/grd-vnc-tls.c
|
||||
index ac6c35f6..312b6b92 100644
|
||||
index ac6c35f..312b6b9 100644
|
||||
--- a/src/grd-vnc-tls.c
|
||||
+++ b/src/grd-vnc-tls.c
|
||||
@@ -41,6 +41,12 @@ typedef enum _GrdTlsHandshakeState
|
||||
@ -1448,10 +1449,10 @@ index ac6c35f6..312b6b92 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.44.0
|
||||
2.51.1
|
||||
|
||||
|
||||
From 1ed580b541ab5c3b815d8e29cf3aa71f1de0b649 Mon Sep 17 00:00:00 2001
|
||||
From b4423eea5253d317f88c66267103c35d54bba3f2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Wed, 27 Nov 2019 16:48:00 +0100
|
||||
Subject: [PATCH 6/7] session-vnc: Set our own password handling function up
|
||||
@ -1470,7 +1471,7 @@ password prompt.
|
||||
1 file changed, 2 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
|
||||
index 3ee06f79..6e118d88 100644
|
||||
index b48b901..87cc7d8 100644
|
||||
--- a/src/grd-session-vnc.c
|
||||
+++ b/src/grd-session-vnc.c
|
||||
@@ -99,11 +99,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc);
|
||||
@ -1503,10 +1504,10 @@ index 3ee06f79..6e118d88 100644
|
||||
rfbProcessEvents (rfb_screen, 0);
|
||||
}
|
||||
--
|
||||
2.44.0
|
||||
2.51.1
|
||||
|
||||
|
||||
From 9b7b729d9f945fcb2942c74d8ab7a9b62d6cf4bd Mon Sep 17 00:00:00 2001
|
||||
From 3f15e65f7f7a2ad01976183ec80af321a577decb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Mon, 12 Oct 2020 17:34:30 +0200
|
||||
Subject: [PATCH 7/7] vnc: Copy pixels using the right destination stride
|
||||
@ -1524,10 +1525,10 @@ dropped.
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h
|
||||
index 5db388b0..c4f4e8d4 100644
|
||||
index 778e497..6cb247a 100644
|
||||
--- a/src/grd-session-vnc.h
|
||||
+++ b/src/grd-session-vnc.h
|
||||
@@ -68,7 +68,8 @@ int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
|
||||
@@ -67,7 +67,8 @@ int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
|
||||
|
||||
int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc);
|
||||
|
||||
@ -1538,5 +1539,5 @@ index 5db388b0..c4f4e8d4 100644
|
||||
gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc);
|
||||
|
||||
--
|
||||
2.44.0
|
||||
2.51.1
|
||||
|
||||
|
||||
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (gnome-remote-desktop-47.3.tar.xz) = 6a2da7fd3c09d47594eee53146fcc9c467844ce4d0282b4fb88f265016e3fd11f7ee5629cc70164427c024ad91b07021d5a5b9f771e983accc6019c17a0c5f7f
|
||||
SHA512 (gnome-remote-desktop-49.3.tar.xz) = 66beb510c41f7dc35d2e820d27c5f1494e187b46f53c2cd1b373e82c266019f39af4f807ed5ffe4f6c57bbd842cf58ec6f46abe66db38accc8b162592cee0d59
|
||||
|
||||
Loading…
Reference in New Issue
Block a user