From e7e57080914693611887ac755460b4b178f817a6 Mon Sep 17 00:00:00 2001 From: Daniel Kahn Gillmor Date: Tue, 1 Nov 2016 00:14:10 -0400 Subject: 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 Gbp-Pq: Topic gpg-agent-idling Gbp-Pq: Name agent-Avoid-tight-timer-tick-when-possible.patch --- agent/call-scd.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'agent/call-scd.c') 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); -- cgit v1.2.3