[gnome-remote-desktop] session-rdp: Also set and use the refresh rate for RDP surfaces
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-remote-desktop] session-rdp: Also set and use the refresh rate for RDP surfaces
- Date: Fri, 3 Sep 2021 09:34:42 +0000 (UTC)
commit aac4dcf53127e6d01ef4bc7214c429a29bf1f819
Author: Pascal Nowack <Pascal Nowack gmx de>
Date: Tue Apr 6 16:54:51 2021 +0200
session-rdp: Also set and use the refresh rate for RDP surfaces
Currently, hardcoded to 30 FPS. Use the value also for the maximum
framerate in the PipeWire class.
src/grd-rdp-pipewire-stream.c | 6 ++++--
src/grd-rdp-pipewire-stream.h | 1 +
src/grd-session-rdp.c | 4 ++++
3 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/src/grd-rdp-pipewire-stream.c b/src/grd-rdp-pipewire-stream.c
index 61a5300..4bba33d 100644
--- a/src/grd-rdp-pipewire-stream.c
+++ b/src/grd-rdp-pipewire-stream.c
@@ -440,6 +440,7 @@ static const struct pw_stream_events stream_events = {
static gboolean
connect_to_stream (GrdRdpPipeWireStream *stream,
+ uint32_t refresh_rate,
GError **error)
{
struct pw_stream *pipewire_stream;
@@ -459,7 +460,7 @@ connect_to_stream (GrdRdpPipeWireStream *stream,
min_rect = SPA_RECTANGLE (1, 1);
max_rect = SPA_RECTANGLE (INT32_MAX, INT32_MAX);
min_framerate = SPA_FRACTION (1, 1);
- max_framerate = SPA_FRACTION (30, 1);
+ max_framerate = SPA_FRACTION (refresh_rate, 1);
pod_builder = SPA_POD_BUILDER_INIT (params_buffer, sizeof (params_buffer));
params[0] = spa_pod_builder_add_object (
@@ -523,6 +524,7 @@ static const struct pw_core_events core_events = {
GrdRdpPipeWireStream *
grd_rdp_pipewire_stream_new (GrdSessionRdp *session_rdp,
uint32_t src_node_id,
+ uint32_t refresh_rate,
GError **error)
{
g_autoptr (GrdRdpPipeWireStream) stream = NULL;
@@ -565,7 +567,7 @@ grd_rdp_pipewire_stream_new (GrdSessionRdp *session_rdp,
&core_events,
stream);
- if (!connect_to_stream (stream, error))
+ if (!connect_to_stream (stream, refresh_rate, error))
return NULL;
return g_steal_pointer (&stream);
diff --git a/src/grd-rdp-pipewire-stream.h b/src/grd-rdp-pipewire-stream.h
index dca92c3..69b7592 100644
--- a/src/grd-rdp-pipewire-stream.h
+++ b/src/grd-rdp-pipewire-stream.h
@@ -32,6 +32,7 @@ G_DECLARE_FINAL_TYPE (GrdRdpPipeWireStream, grd_rdp_pipewire_stream,
GrdRdpPipeWireStream *grd_rdp_pipewire_stream_new (GrdSessionRdp *session_rdp,
uint32_t src_node_id,
+ uint32_t refresh_rate,
GError **error);
#endif /* GRD_RDP_PIPEWIRE_STREAM_H */
diff --git a/src/grd-session-rdp.c b/src/grd-session-rdp.c
index 33424ae..2d44e86 100644
--- a/src/grd-session-rdp.c
+++ b/src/grd-session-rdp.c
@@ -1617,6 +1617,7 @@ rdp_peer_post_connect (freerdp_peer *peer)
rdp_settings->PointerCacheSize = MIN (rdp_settings->PointerCacheSize, 100);
session_rdp->rdp_surface = g_malloc0 (sizeof (GrdRdpSurface));
+ session_rdp->rdp_surface->refresh_rate = 30;
if (rdp_settings->SupportGraphicsPipeline)
{
@@ -2050,11 +2051,14 @@ grd_session_rdp_stream_ready (GrdSession *session,
{
GrdSessionRdp *session_rdp = GRD_SESSION_RDP (session);
uint32_t pipewire_node_id;
+ uint16_t refresh_rate;
g_autoptr (GError) error = NULL;
pipewire_node_id = grd_stream_get_pipewire_node_id (stream);
+ refresh_rate = session_rdp->rdp_surface->refresh_rate;
session_rdp->pipewire_stream = grd_rdp_pipewire_stream_new (session_rdp,
pipewire_node_id,
+ refresh_rate,
&error);
if (!session_rdp->pipewire_stream)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]