aboutsummaryrefslogtreecommitdiffstats
path: root/agent/call-scd.c
diff options
context:
space:
mode:
authorDaniel Kahn Gillmor <[email protected]>2016-11-01 04:14:10 +0000
committerDaniel Kahn Gillmor <[email protected]>2019-07-20 18:16:20 +0000
commite7e57080914693611887ac755460b4b178f817a6 (patch)
treeff5aca2f1b5ef97728823c0db70ac43c8c0be3e2 /agent/call-scd.c
parentagent: Allow threads to interrupt main select loop with SIGCONT. (diff)
downloadgnupg-e7e57080914693611887ac755460b4b178f817a6.tar.gz
gnupg-e7e57080914693611887ac755460b4b178f817a6.zip
agent: Avoid tight timer tick when possible.
* agent/gpg-agent.c (need_tick): Evaluate whether the short-phase handle_tick() is needed. (handle_connections): On each cycle of the select loop, adjust whether we should call handle_tick() or not. (start_connection_thread_ssh, do_start_connection_thread): Signal the main loop when the child terminates. * agent/call-scd.c (start_scd): Call interrupt_main_thread_loop() once the scdaemon thread context has started up. -- With this change, an idle gpg-agent that has no scdaemon running only wakes up once a minute (to check_own_socket). Thanks to Ian Jackson and NIIBE Yutaka who helped me improve some of the blocking and corner cases. Signed-off-by: Daniel Kahn Gillmor <[email protected]> Gbp-Pq: Topic gpg-agent-idling Gbp-Pq: Name agent-Avoid-tight-timer-tick-when-possible.patch
Diffstat (limited to 'agent/call-scd.c')
-rw-r--r--agent/call-scd.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/agent/call-scd.c b/agent/call-scd.c
index 6438693af..ee69bb4c3 100644
--- a/agent/call-scd.c
+++ b/agent/call-scd.c
@@ -414,6 +414,8 @@ start_scd (ctrl_t ctrl)
primary_scd_ctx = ctx;
primary_scd_ctx_reusable = 0;
+ /* notify the main loop that something has changed */
+ interrupt_main_thread_loop ();
leave:
xfree (abs_homedir);