The input thread should generate events, not send them. Make it easier to find the instances where it's doing so.
Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Tested-by: Olivier Fourdan <ofour...@redhat.com> --- Changes to v1: - add check for InputThreadInfo to avoid null-pointer dereference - remove leftover declaration for in_input_thread include/input.h | 1 + os/inputthread.c | 8 ++++++++ os/io.c | 3 +++ 3 files changed, 12 insertions(+) diff --git a/include/input.h b/include/input.h index bb58b22..6c9e45d 100644 --- a/include/input.h +++ b/include/input.h @@ -722,6 +722,7 @@ extern _X_HIDDEN void input_constrain_cursor(DeviceIntPtr pDev, ScreenPtr screen extern _X_EXPORT void input_lock(void); extern _X_EXPORT void input_unlock(void); extern _X_EXPORT void input_force_unlock(void); +extern _X_EXPORT int in_input_thread(void); extern void InputThreadPreInit(void); extern void InputThreadInit(void); diff --git a/os/inputthread.c b/os/inputthread.c index 4400fba..e7159c7 100644 --- a/os/inputthread.c +++ b/os/inputthread.c @@ -90,6 +90,13 @@ static pthread_mutex_t input_mutex; static Bool input_mutex_initialized; #endif +int +in_input_thread(void) +{ + return inputThreadInfo && + pthread_equal(pthread_self(), inputThreadInfo->thread); +} + void input_lock(void) { @@ -531,6 +538,7 @@ void input_force_unlock(void) {} void InputThreadPreInit(void) {} void InputThreadInit(void) {} void InputThreadFini(void) {} +int in_input_thread(void) { return 0; } int InputThreadRegisterDev(int fd, NotifyFdProcPtr readInputProc, diff --git a/os/io.c b/os/io.c index be85226..8aa51a1 100644 --- a/os/io.c +++ b/os/io.c @@ -651,6 +651,9 @@ WriteToClient(ClientPtr who, int count, const void *__buf) int padBytes; const char *buf = __buf; + BUG_RETURN_VAL_MSG(in_input_thread(), 0, + "******** %s called from input thread *********\n", __func__); + #ifdef DEBUG_COMMUNICATION Bool multicount = FALSE; #endif -- 2.9.3 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel