diff options
author | Daniel Kahn Gillmor <[email protected]> | 2016-11-01 04:14:10 +0000 |
---|---|---|
committer | Daniel Kahn Gillmor <[email protected]> | 2019-07-20 18:16:20 +0000 |
commit | e7e57080914693611887ac755460b4b178f817a6 (patch) | |
tree | ff5aca2f1b5ef97728823c0db70ac43c8c0be3e2 /agent/call-scd.c | |
parent | agent: Allow threads to interrupt main select loop with SIGCONT. (diff) | |
download | gnupg-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.c | 2 |
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); |