Merge remote-tracking branch 'whot/for-keith'
This commit is contained in:
commit
ab47ec9636
|
@ -661,6 +661,8 @@ void
|
|||
DeepCopyDeviceClasses(DeviceIntPtr from, DeviceIntPtr to,
|
||||
DeviceChangedEvent *dce)
|
||||
{
|
||||
OsBlockSIGIO();
|
||||
|
||||
/* generic feedback classes, not tied to pointer and/or keyboard */
|
||||
DeepCopyFeedbackClasses(from, to);
|
||||
|
||||
|
@ -668,6 +670,8 @@ DeepCopyDeviceClasses(DeviceIntPtr from, DeviceIntPtr to,
|
|||
DeepCopyKeyboardClasses(from, to);
|
||||
if ((dce->flags & DEVCHANGE_POINTER_EVENT))
|
||||
DeepCopyPointerClasses(from, to);
|
||||
|
||||
OsReleaseSIGIO();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -19,22 +19,6 @@ Section "InputClass"
|
|||
Option "IgnoreRelativeAxes" "off"
|
||||
EndSection
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=612140
|
||||
# please make Evoluent VerticalMouse 3 work out of the box
|
||||
# Button mapping on this mouse is quirky
|
||||
Section "InputClass"
|
||||
Identifier "Evoluent VerticalMouse 3"
|
||||
MatchProduct "Evoluent VerticalMouse 3"
|
||||
# Sets following configuration:
|
||||
# top button: left
|
||||
# middle button: middle
|
||||
# bottom button: right
|
||||
# wheel click: middle
|
||||
# thumb button: 8 (back)
|
||||
Option "ButtonMapping" "1 2 2 4 5 6 7 3 8"
|
||||
EndSection
|
||||
|
||||
|
||||
# https://bugs.freedesktop.org/show_bug.cgi?id=55867
|
||||
# Bug 55867 - Doesn't know how to tag XI_TRACKBALL
|
||||
Section "InputClass"
|
||||
|
|
|
@ -97,7 +97,7 @@ Section "ServerFlags"
|
|||
# Uncomment this to disable the <Ctrl><Alt><BS> server abort sequence
|
||||
# This allows clients to receive this key event.
|
||||
|
||||
# Option "DontZap" "false"
|
||||
# Option "DontZap" "true"
|
||||
|
||||
# Uncomment this to disable the <Ctrl><Alt><KP_+>/<KP_-> mode switching
|
||||
# sequences. This allows clients to receive these key events.
|
||||
|
|
|
@ -223,9 +223,8 @@ turns on auto-repeat.
|
|||
.B -retro
|
||||
starts the stipple with the classic stipple and cursor visible. The default
|
||||
is to start with a black root window, and to suppress display of the cursor
|
||||
until the first time an application calls XDefineCursor(). For the Xorg
|
||||
server, this also sets the default for the DontZap option to FALSE. For
|
||||
kdrive servers, this implies -zap.
|
||||
until the first time an application calls XDefineCursor(). For kdrive
|
||||
servers, this implies -zap.
|
||||
.TP 8
|
||||
.B \-s \fIminutes\fP
|
||||
sets screen-saver timeout time in minutes.
|
||||
|
|
65
os/log.c
65
os/log.c
|
@ -342,7 +342,7 @@ out:
|
|||
* which directives you use.
|
||||
*/
|
||||
static int
|
||||
pnprintf(char *string, size_t size, const char *f, va_list args)
|
||||
vpnprintf(char *string, int size_in, const char *f, va_list args)
|
||||
{
|
||||
int f_idx = 0;
|
||||
int s_idx = 0;
|
||||
|
@ -353,6 +353,7 @@ pnprintf(char *string, size_t size, const char *f, va_list args)
|
|||
int i;
|
||||
uint64_t ui;
|
||||
int64_t si;
|
||||
size_t size = size_in;
|
||||
|
||||
for (; f_idx < f_len && s_idx < size - 1; f_idx++) {
|
||||
int length_modifier = 0;
|
||||
|
@ -484,6 +485,19 @@ pnprintf(char *string, size_t size, const char *f, va_list args)
|
|||
return s_idx;
|
||||
}
|
||||
|
||||
static int
|
||||
pnprintf(char *string, int size, const char *f, ...)
|
||||
{
|
||||
int rc;
|
||||
va_list args;
|
||||
|
||||
va_start(args, f);
|
||||
rc = vpnprintf(string, size, f, args);
|
||||
va_end(args);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* This function does the actual log message writes. It must be signal safe.
|
||||
* When attempting to call non-signal-safe functions, guard them with a check
|
||||
* of the inSignalContext global variable. */
|
||||
|
@ -597,7 +611,6 @@ LogMessageTypeVerbString(MessageType type, int verb)
|
|||
void
|
||||
LogVMessageVerb(MessageType type, int verb, const char *format, va_list args)
|
||||
{
|
||||
static unsigned int warned;
|
||||
const char *type_str;
|
||||
char buf[1024];
|
||||
const size_t size = sizeof(buf);
|
||||
|
@ -605,17 +618,8 @@ LogVMessageVerb(MessageType type, int verb, const char *format, va_list args)
|
|||
size_t len = 0;
|
||||
|
||||
if (inSignalContext) {
|
||||
if (warned < 3) {
|
||||
BUG_WARN_MSG(inSignalContext,
|
||||
"Warning: attempting to log data in a signal unsafe "
|
||||
"manner while in signal context.\nPlease update to check "
|
||||
"inSignalContext and/or use LogMessageVerbSigSafe() or "
|
||||
"ErrorFSigSafe().\nThe offending log format message is:\n"
|
||||
"%s\n", format);
|
||||
warned++;
|
||||
if (warned == 3)
|
||||
LogMessageVerbSigSafe(X_WARNING, -1, "Warned %u times about sigsafe logging. Will be quiet now.\n", warned);
|
||||
}
|
||||
LogVMessageVerbSigSafe(type, verb, format, args);
|
||||
return;
|
||||
}
|
||||
|
||||
type_str = LogMessageTypeVerbString(type, verb);
|
||||
|
@ -687,7 +691,7 @@ LogVMessageVerbSigSafe(MessageType type, int verb, const char *format, va_list a
|
|||
LogSWrite(verb, " ", 1, FALSE);
|
||||
}
|
||||
|
||||
len = pnprintf(buf, sizeof(buf), format, args);
|
||||
len = vpnprintf(buf, sizeof(buf), format, args);
|
||||
|
||||
/* Force '\n' at end of truncated line */
|
||||
if (sizeof(buf) - len == 1)
|
||||
|
@ -701,40 +705,37 @@ void
|
|||
LogVHdrMessageVerb(MessageType type, int verb, const char *msg_format,
|
||||
va_list msg_args, const char *hdr_format, va_list hdr_args)
|
||||
{
|
||||
static unsigned int warned;
|
||||
const char *type_str;
|
||||
char buf[1024];
|
||||
const size_t size = sizeof(buf);
|
||||
Bool newline;
|
||||
size_t len = 0;
|
||||
|
||||
if (inSignalContext) {
|
||||
if (warned < 3) {
|
||||
BUG_WARN_MSG(inSignalContext,
|
||||
"Warning: attempting to log data in a signal unsafe "
|
||||
"manner while in signal context.\nPlease update to check "
|
||||
"inSignalContext and/or use LogMessageVerbSigSafe().\nThe "
|
||||
"offending header and log message formats are:\n%s %s\n",
|
||||
hdr_format, msg_format);
|
||||
warned++;
|
||||
if (warned == 3)
|
||||
LogMessageVerbSigSafe(X_WARNING, -1, "Warned %u times about sigsafe logging. Will be quiet now.\n", warned);
|
||||
}
|
||||
}
|
||||
int (*vprintf_func)(char *, int, const char* _X_RESTRICT_KYWD f, va_list args)
|
||||
_X_ATTRIBUTE_PRINTF(3, 0);
|
||||
int (*printf_func)(char *, int, const char* _X_RESTRICT_KYWD f, ...)
|
||||
_X_ATTRIBUTE_PRINTF(3, 4);
|
||||
|
||||
type_str = LogMessageTypeVerbString(type, verb);
|
||||
if (!type_str)
|
||||
return;
|
||||
|
||||
if (inSignalContext) {
|
||||
vprintf_func = vpnprintf;
|
||||
printf_func = pnprintf;
|
||||
} else {
|
||||
vprintf_func = Xvscnprintf;
|
||||
printf_func = Xscnprintf;
|
||||
}
|
||||
|
||||
/* if type_str is not "", prepend it and ' ', to message */
|
||||
if (type_str[0] != '\0')
|
||||
len += Xscnprintf(&buf[len], size - len, "%s ", type_str);
|
||||
len += printf_func(&buf[len], size - len, "%s ", type_str);
|
||||
|
||||
if (hdr_format && size - len > 1)
|
||||
len += Xvscnprintf(&buf[len], size - len, hdr_format, hdr_args);
|
||||
len += vprintf_func(&buf[len], size - len, hdr_format, hdr_args);
|
||||
|
||||
if (msg_format && size - len > 1)
|
||||
len += Xvscnprintf(&buf[len], size - len, msg_format, msg_args);
|
||||
len += vprintf_func(&buf[len], size - len, msg_format, msg_args);
|
||||
|
||||
/* Force '\n' at end of truncated line */
|
||||
if (size - len == 1)
|
||||
|
|
Loading…
Reference in New Issue
Block a user