os: log a bug whenever WriteToClient is called from the input thread

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.hutterer@who-t.net>
Tested-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
This commit is contained in:
Peter Hutterer 2017-02-23 10:21:49 +10:00
parent 7d7788e0f2
commit 1b12249fd6
3 changed files with 12 additions and 0 deletions

View File

@ -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);

View File

@ -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,

View File

@ -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