mirror of
https://github.com/X11Libre/xserver.git
synced 2026-09-21 20:26:45 +00:00
XFree86 4.3.0.1
This commit is contained in:
parent
9508a382f8
commit
d568221710
438 changed files with 42562 additions and 37394 deletions
67
xkb/xkb.c
67
xkb/xkb.c
|
|
@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
|
|||
THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
********************************************************/
|
||||
/* $XFree86: xc/programs/Xserver/xkb/xkb.c,v 3.18 2002/12/20 20:18:35 paulo Exp $ */
|
||||
|
||||
#include <stdio.h>
|
||||
#include "X.h"
|
||||
|
|
@ -231,7 +232,7 @@ ProcXkbSelectEvents(client)
|
|||
client->mapNotifyMask&= ~stuff->affectMap;
|
||||
client->mapNotifyMask|= (stuff->affectMap&stuff->map);
|
||||
}
|
||||
if (stuff->affectWhich&(~XkbMapNotifyMask)==0)
|
||||
if ((stuff->affectWhich&(~XkbMapNotifyMask))==0)
|
||||
return client->noClientException;
|
||||
|
||||
masks = XkbFindClientResource((DevicePtr)dev,client);
|
||||
|
|
@ -1946,7 +1947,7 @@ register XkbServerMapPtr server = xkb->server;
|
|||
register unsigned i;
|
||||
unsigned first,last;
|
||||
|
||||
if ((req->present&XkbKeyBehaviorsMask==0)||(req->nKeyBehaviors<1)) {
|
||||
if (((req->present&XkbKeyBehaviorsMask)==0)||(req->nKeyBehaviors<1)) {
|
||||
req->present&= ~XkbKeyBehaviorsMask;
|
||||
req->nKeyBehaviors= 0;
|
||||
return 1;
|
||||
|
|
@ -2396,21 +2397,21 @@ unsigned first,last;
|
|||
server->behaviors[wire->key].type= wire->type;
|
||||
server->behaviors[wire->key].data= wire->data;
|
||||
if ((wire->type==XkbKB_RadioGroup)&&(((int)wire->data)>maxRG))
|
||||
maxRG= wire->data;
|
||||
maxRG= wire->data + 1;
|
||||
}
|
||||
wire++;
|
||||
}
|
||||
|
||||
if (maxRG>(int)xkbi->nRadioGroups) {
|
||||
int sz = (maxRG+1)*sizeof(XkbRadioGroupRec);
|
||||
int sz = maxRG*sizeof(XkbRadioGroupRec);
|
||||
if (xkbi->radioGroups)
|
||||
xkbi->radioGroups=(XkbRadioGroupPtr)Xrealloc(xkbi->radioGroups,sz);
|
||||
else xkbi->radioGroups= (XkbRadioGroupPtr)Xcalloc(sz);
|
||||
xkbi->radioGroups=(XkbRadioGroupPtr)_XkbRealloc(xkbi->radioGroups,sz);
|
||||
else xkbi->radioGroups= (XkbRadioGroupPtr)_XkbCalloc(1, sz);
|
||||
if (xkbi->radioGroups) {
|
||||
if (xkbi->nRadioGroups)
|
||||
bzero(&xkbi->radioGroups[xkbi->nRadioGroups],
|
||||
(maxRG-xkbi->nRadioGroups)*sizeof(XkbRadioGroupRec));
|
||||
xkbi->nRadioGroups= maxRG+1;
|
||||
xkbi->nRadioGroups= maxRG;
|
||||
}
|
||||
else xkbi->nRadioGroups= 0;
|
||||
/* should compute members here */
|
||||
|
|
@ -3323,9 +3324,9 @@ ProcXkbGetNamedIndicator(client)
|
|||
{
|
||||
DeviceIntPtr dev;
|
||||
xkbGetNamedIndicatorReply rep;
|
||||
register int i;
|
||||
register int i = 0;
|
||||
XkbSrvLedInfoPtr sli;
|
||||
XkbIndicatorMapPtr map;
|
||||
XkbIndicatorMapPtr map = NULL;
|
||||
Bool supported;
|
||||
|
||||
REQUEST(xkbGetNamedIndicatorReq);
|
||||
|
|
@ -3436,7 +3437,7 @@ ProcXkbSetNamedIndicator(client)
|
|||
DeviceIntPtr dev,kbd;
|
||||
XkbIndicatorMapPtr map;
|
||||
XkbSrvLedInfoPtr sli;
|
||||
register int led;
|
||||
register int led = 0;
|
||||
unsigned extDevReason;
|
||||
unsigned statec,namec,mapc;
|
||||
XkbEventCauseRec cause;
|
||||
|
|
@ -4224,7 +4225,7 @@ ProcXkbSetNames(client)
|
|||
names->phys_symbols= *tmp++;
|
||||
if (stuff->which&XkbTypesNameMask)
|
||||
names->types= *tmp++;
|
||||
if (stuff->which&XkbCompatNameMask)
|
||||
if (stuff->which&XkbCompatNameMask)
|
||||
names->compat= *tmp++;
|
||||
if ((stuff->which&XkbKeyTypeNamesMask)&&(stuff->nTypes>0)) {
|
||||
register unsigned i;
|
||||
|
|
@ -4310,7 +4311,7 @@ ProcXkbSetNames(client)
|
|||
tmp+= stuff->nRadioGroups;
|
||||
}
|
||||
else if (names->radio_groups) {
|
||||
Xfree(names->radio_groups);
|
||||
_XkbFree(names->radio_groups);
|
||||
names->radio_groups= NULL;
|
||||
names->num_rg= 0;
|
||||
}
|
||||
|
|
@ -5597,7 +5598,7 @@ ProcXkbPerClientFlags(client)
|
|||
/* all latin-1 alphanumerics, plus parens, minus, underscore, slash */
|
||||
/* and wildcards */
|
||||
static unsigned char componentSpecLegal[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xff, 0x83,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xff, 0x87,
|
||||
0xfe, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x07,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff
|
||||
|
|
@ -5605,7 +5606,7 @@ static unsigned char componentSpecLegal[] = {
|
|||
|
||||
/* same as above but accepts percent, plus and bar too */
|
||||
static unsigned char componentExprLegal[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xaf, 0xff, 0x83,
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0xaf, 0xff, 0x87,
|
||||
0xfe, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x17,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff
|
||||
|
|
@ -5631,7 +5632,7 @@ unsigned char *wire,*str,*tmp,*legal;
|
|||
wire= *pWire;
|
||||
len= (*(unsigned char *)wire++);
|
||||
if (len>0) {
|
||||
str= (unsigned char *)Xcalloc(len+1);
|
||||
str= (unsigned char *)_XkbCalloc(1, len+1);
|
||||
if (str) {
|
||||
tmp= str;
|
||||
for (i=0;i<len;i++) {
|
||||
|
|
@ -5642,7 +5643,7 @@ unsigned char *wire,*str,*tmp,*legal;
|
|||
if (tmp!=str)
|
||||
*tmp++= '\0';
|
||||
else {
|
||||
Xfree(str);
|
||||
_XkbFree(str);
|
||||
str= NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -6018,10 +6019,6 @@ ProcXkbGetKbdByName(client)
|
|||
dev->key->xkbInfo->desc= xkb;
|
||||
finfo.xkb= old_xkb; /* so it'll get freed automatically */
|
||||
|
||||
if (dev->kbdfeed && dev->kbdfeed->xkb_sli) {
|
||||
XkbFreeSrvLedInfo(dev->kbdfeed->xkb_sli);
|
||||
dev->kbdfeed->xkb_sli= NULL;
|
||||
}
|
||||
*xkb->ctrls= *old_xkb->ctrls;
|
||||
for (nG=nTG=0,i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
|
||||
nG= XkbKeyNumGroups(xkb,i);
|
||||
|
|
@ -6038,6 +6035,20 @@ ProcXkbGetKbdByName(client)
|
|||
memcpy(dev->key->modifierMap,xkb->map->modmap,xkb->max_key_code+1);
|
||||
XkbUpdateCoreDescription(dev,True);
|
||||
|
||||
if (dev->kbdfeed && dev->kbdfeed->xkb_sli) {
|
||||
XkbSrvLedInfoPtr old_sli;
|
||||
XkbSrvLedInfoPtr sli;
|
||||
old_sli = dev->kbdfeed->xkb_sli;
|
||||
dev->kbdfeed->xkb_sli = NULL;
|
||||
sli = XkbAllocSrvLedInfo(dev,dev->kbdfeed,NULL,0);
|
||||
if (sli) {
|
||||
sli->explicitState = old_sli->explicitState;
|
||||
sli->effectiveState = old_sli->effectiveState;
|
||||
}
|
||||
dev->kbdfeed->xkb_sli = sli;
|
||||
XkbFreeSrvLedInfo(old_sli);
|
||||
}
|
||||
|
||||
nkn.deviceID= nkn.oldDeviceID= dev->id;
|
||||
nkn.minKeyCode= finfo.xkb->min_key_code;
|
||||
nkn.maxKeyCode= finfo.xkb->max_key_code;
|
||||
|
|
@ -6054,12 +6065,12 @@ ProcXkbGetKbdByName(client)
|
|||
XkbFreeKeyboard(finfo.xkb,XkbAllComponentsMask,True);
|
||||
finfo.xkb= NULL;
|
||||
}
|
||||
if (names.keymap) { Xfree(names.keymap); names.keymap= NULL; }
|
||||
if (names.keycodes) { Xfree(names.keycodes); names.keycodes= NULL; }
|
||||
if (names.types) { Xfree(names.types); names.types= NULL; }
|
||||
if (names.compat) { Xfree(names.compat); names.compat= NULL; }
|
||||
if (names.symbols) { Xfree(names.symbols); names.symbols= NULL; }
|
||||
if (names.geometry) { Xfree(names.geometry); names.geometry= NULL; }
|
||||
if (names.keymap) { _XkbFree(names.keymap); names.keymap= NULL; }
|
||||
if (names.keycodes) { _XkbFree(names.keycodes); names.keycodes= NULL; }
|
||||
if (names.types) { _XkbFree(names.types); names.types= NULL; }
|
||||
if (names.compat) { _XkbFree(names.compat); names.compat= NULL; }
|
||||
if (names.symbols) { _XkbFree(names.symbols); names.symbols= NULL; }
|
||||
if (names.geometry) { _XkbFree(names.geometry); names.geometry= NULL; }
|
||||
return client->noClientException;
|
||||
}
|
||||
|
||||
|
|
@ -6914,9 +6925,9 @@ XkbExtensionInit()
|
|||
{
|
||||
ExtensionEntry *extEntry;
|
||||
|
||||
if (extEntry = AddExtension(XkbName, XkbNumberEvents, XkbNumberErrors,
|
||||
if ((extEntry = AddExtension(XkbName, XkbNumberEvents, XkbNumberErrors,
|
||||
ProcXkbDispatch, SProcXkbDispatch,
|
||||
XkbResetProc, StandardMinorOpcode)) {
|
||||
XkbResetProc, StandardMinorOpcode))) {
|
||||
XkbReqCode = (unsigned char)extEntry->base;
|
||||
XkbEventBase = (unsigned char)extEntry->eventBase;
|
||||
XkbErrorBase = (unsigned char)extEntry->errorBase;
|
||||
|
|
|
|||
Loading…
Reference in a new issue