Add missing patches
Resolves: rhbz#1632781
This commit is contained in:
parent
4f464d73fa
commit
1c8f601801
84
0001-session-vnc-Don-t-requeue-close-session-idle.patch
Normal file
84
0001-session-vnc-Don-t-requeue-close-session-idle.patch
Normal file
@ -0,0 +1,84 @@
|
||||
From add0ea34fd1d6835c99aebeb4e56b805b38e53ec Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Mon, 1 Oct 2018 18:02:39 +0200
|
||||
Subject: [PATCH 1/2] session/vnc: Don't requeue close session idle
|
||||
|
||||
If being closed due to a PipeWire error, RFB will still process state
|
||||
and invoke callbacks when cleaning up the RFB screen, meaning we'd
|
||||
requeue the close session idle handler. Avoid this by avoiding
|
||||
requeueing if there is already one queued, and don't mark is as unqueued
|
||||
until after actually stopping the session.
|
||||
---
|
||||
src/grd-session-vnc.c | 28 ++++++++++++++++++----------
|
||||
1 file changed, 18 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
|
||||
index ce4dd29..3c98eeb 100644
|
||||
--- a/src/grd-session-vnc.c
|
||||
+++ b/src/grd-session-vnc.c
|
||||
@@ -165,6 +165,16 @@ grd_session_vnc_draw_buffer (GrdSessionVnc *session_vnc,
|
||||
rfbProcessEvents (session_vnc->rfb_screen, 0);
|
||||
}
|
||||
|
||||
+static void
|
||||
+maybe_queue_close_session_idle (GrdSessionVnc *session_vnc)
|
||||
+{
|
||||
+ if (session_vnc->close_session_idle_id)
|
||||
+ return;
|
||||
+
|
||||
+ session_vnc->close_session_idle_id =
|
||||
+ g_idle_add (close_session_idle, session_vnc);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
handle_client_gone (rfbClientPtr rfb_client)
|
||||
{
|
||||
@@ -172,8 +182,7 @@ handle_client_gone (rfbClientPtr rfb_client)
|
||||
|
||||
g_debug ("VNC client gone");
|
||||
|
||||
- session_vnc->close_session_idle_id =
|
||||
- g_idle_add (close_session_idle, session_vnc);
|
||||
+ maybe_queue_close_session_idle (session_vnc);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -670,12 +679,6 @@ grd_session_vnc_stop (GrdSession *session)
|
||||
|
||||
g_debug ("Stopping VNC session");
|
||||
|
||||
- if (session_vnc->close_session_idle_id)
|
||||
- {
|
||||
- g_source_remove (session_vnc->close_session_idle_id);
|
||||
- session_vnc->close_session_idle_id = 0;
|
||||
- }
|
||||
-
|
||||
g_clear_object (&session_vnc->pipewire_stream);
|
||||
|
||||
grd_session_vnc_detach_source (session_vnc);
|
||||
@@ -683,6 +686,12 @@ grd_session_vnc_stop (GrdSession *session)
|
||||
g_clear_object (&session_vnc->connection);
|
||||
g_clear_pointer (&session_vnc->rfb_screen->frameBuffer, g_free);
|
||||
g_clear_pointer (&session_vnc->rfb_screen, (GDestroyNotify) rfbScreenCleanup);
|
||||
+
|
||||
+ if (session_vnc->close_session_idle_id)
|
||||
+ {
|
||||
+ g_source_remove (session_vnc->close_session_idle_id);
|
||||
+ session_vnc->close_session_idle_id = 0;
|
||||
+ }
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -703,8 +712,7 @@ on_pipwire_stream_closed (GrdVncPipeWireStream *stream,
|
||||
{
|
||||
g_warning ("PipeWire stream closed, closing client");
|
||||
|
||||
- session_vnc->close_session_idle_id =
|
||||
- g_idle_add (close_session_idle, session_vnc);
|
||||
+ maybe_queue_close_session_idle (session_vnc);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 59188d81cf8936cd9f5400df040d875427251bf2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Mon, 1 Oct 2018 18:05:07 +0200
|
||||
Subject: [PATCH 2/2] vnc-pipewire-stream: Close session when disconnected
|
||||
|
||||
When there is an active stream, and we're disconnected from PipeWire
|
||||
(e.g. because it terminated), close the session.
|
||||
---
|
||||
src/grd-vnc-pipewire-stream.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/grd-vnc-pipewire-stream.c b/src/grd-vnc-pipewire-stream.c
|
||||
index 66d66a0..d6454b8 100644
|
||||
--- a/src/grd-vnc-pipewire-stream.c
|
||||
+++ b/src/grd-vnc-pipewire-stream.c
|
||||
@@ -392,6 +392,9 @@ on_state_changed (void *user_data,
|
||||
}
|
||||
break;
|
||||
case PW_REMOTE_STATE_UNCONNECTED:
|
||||
+ if (stream->pipewire_stream)
|
||||
+ g_signal_emit (stream, signals[CLOSED], 0);
|
||||
+ break;
|
||||
case PW_REMOTE_STATE_CONNECTING:
|
||||
break;
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
|
Loading…
Reference in New Issue
Block a user