Subject: bug#25214: #25214 26.0.50; Interacting with user from threads other than the primary

From: Zhang Haijun <[email-masked]>
Date: Thu, 7 Feb 2019 01:39:54 +0000

> 在 2019年2月6日，下午11:41，Eli Zaretskii <[email-masked]> 写道：
> 
>> From: Zhang Haijun <[email-masked]>
>> Date: Wed, 6 Feb 2019 06:58:44 +0000
>> 
>> Every inputting request from other threads can be treated like an email.
> 
> The problem is in receiving the input into Emacs in the first place.
> It has to be done by some thread, not necessarily the one that is
> executing when input arrives.  So we are back to square one.
> 
> Thanks.

What about the following:

1. Create a fd to receive the input request event. This fd can only be watched by main thread or a special keybord sheduler thread.
2. If a thread need input, it sends an input request event(containning its thread id, prompt …) to the fd and then goto background.
3. The main thread(or keyboard sheduler thread) receives the event and put it into in-box and show a notification to user.
4. User opens the in-box and selects a request. Emacs switches to the thread.

I’m not too familar with emacs’ internal. Maybe I’m wrong.