Commit af1f7cee authored by Ulrich Sibiller's avatar Ulrich Sibiller

Lift XKB*.c to libX11 1.3.4

parent 3e75c816
...@@ -23,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH ...@@ -23,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE. THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/ ********************************************************/
/* $XFree86$ */
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include <config.h> #include <config.h>
......
...@@ -365,7 +365,6 @@ XkbRefreshKeyboardMapping(register XkbMapNotifyEvent *event) ...@@ -365,7 +365,6 @@ XkbRefreshKeyboardMapping(register XkbMapNotifyEvent *event)
changes= xkbi->changes; changes= xkbi->changes;
else bzero(&changes,sizeof(changes)); else bzero(&changes,sizeof(changes));
XkbNoteMapChanges(&changes,event,XKB_XLIB_MAP_MASK); XkbNoteMapChanges(&changes,event,XKB_XLIB_MAP_MASK);
LockDisplay(dpy);
if ((rtrn=XkbGetMapChanges(dpy,xkbi->desc,&changes))!=Success) { if ((rtrn=XkbGetMapChanges(dpy,xkbi->desc,&changes))!=Success) {
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr,"Internal Error! XkbGetMapChanges failed:\n"); fprintf(stderr,"Internal Error! XkbGetMapChanges failed:\n");
...@@ -376,7 +375,6 @@ XkbRefreshKeyboardMapping(register XkbMapNotifyEvent *event) ...@@ -376,7 +375,6 @@ XkbRefreshKeyboardMapping(register XkbMapNotifyEvent *event)
xkbi->flags&= ~XkbMapPending; xkbi->flags&= ~XkbMapPending;
bzero(&xkbi->changes,sizeof(XkbMapChangesRec)); bzero(&xkbi->changes,sizeof(XkbMapChangesRec));
} }
UnlockDisplay(dpy);
return rtrn; return rtrn;
} }
return BadMatch; return BadMatch;
...@@ -631,7 +629,7 @@ XkbTranslateKeySym( register Display * dpy, ...@@ -631,7 +629,7 @@ XkbTranslateKeySym( register Display * dpy,
} }
if (change) { if (change) {
if (n==1) if (n==1)
*sym_rtrn=(*xkb->cvt.MBToKS)(xkb->cvt.MBToKSPriv,buffer,n,0); *sym_rtrn=(*xkb->cvt.MBToKS)(xkb->cvt.MBToKSPriv,buffer,n,NULL);
else *sym_rtrn= NoSymbol; else *sym_rtrn= NoSymbol;
} }
} }
......
...@@ -23,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH ...@@ -23,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE. THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/ ********************************************************/
/* $XFree86$ */
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include <config.h> #include <config.h>
......
...@@ -186,7 +186,7 @@ Strcmp(char *str1, char *str2) ...@@ -186,7 +186,7 @@ Strcmp(char *str1, char *str2)
#endif #endif
int int
_XkbGetConverters(char *encoding_name, XkbConverters *cvt_rtrn) _XkbGetConverters(const char *encoding_name, XkbConverters *cvt_rtrn)
{ {
if ( !cvt_rtrn ) return 0; if ( !cvt_rtrn ) return 0;
...@@ -217,7 +217,7 @@ _XkbGetConverters(char *encoding_name, XkbConverters *cvt_rtrn) ...@@ -217,7 +217,7 @@ _XkbGetConverters(char *encoding_name, XkbConverters *cvt_rtrn)
static char *_XkbKnownLanguages = "c=ascii:da,de,en,es,fr,is,it,nl,no,pt,sv=iso8859-1:hu,pl,cs=iso8859-2:eo=iso8859-3:sp=iso8859-5:ar,ara=iso8859-6:el=iso8859-7:he=iso8859-8:tr=iso8859-9:lt,lv=iso8859-13:et,fi=iso8859-15:ru=koi8-r:uk=koi8-u:th,th_TH,th_TH.iso8859-11=iso8859-11:th_TH.TIS620=tis620:hy=armscii-8:vi=tcvn-5712:ka=georgian-academy:be,bg=microsoft-cp1251"; static char *_XkbKnownLanguages = "c=ascii:da,de,en,es,fr,is,it,nl,no,pt,sv=iso8859-1:hu,pl,cs=iso8859-2:eo=iso8859-3:sp=iso8859-5:ar,ara=iso8859-6:el=iso8859-7:he=iso8859-8:tr=iso8859-9:lt,lv=iso8859-13:et,fi=iso8859-15:ru=koi8-r:uk=koi8-u:th,th_TH,th_TH.iso8859-11=iso8859-11:th_TH.TIS620=tis620:hy=armscii-8:vi=tcvn-5712:ka=georgian-academy:be,bg=microsoft-cp1251";
char * char *
_XkbGetCharset() _XkbGetCharset(void)
{ {
/* /*
* PAGE USAGE TUNING: explicitly initialize to move these to data * PAGE USAGE TUNING: explicitly initialize to move these to data
...@@ -318,7 +318,7 @@ _XkbGetCharset() ...@@ -318,7 +318,7 @@ _XkbGetCharset()
} }
#else #else
char * char *
_XkbGetCharset() _XkbGetCharset(void)
{ {
char *tmp; char *tmp;
XLCd lcd; XLCd lcd;
......
...@@ -71,6 +71,9 @@ XkbPointPtr pt; ...@@ -71,6 +71,9 @@ XkbPointPtr pt;
for (pt=outline->points,p=0;p<outline->num_points;p++,pt++) { for (pt=outline->points,p=0;p<outline->num_points;p++,pt++) {
_XkbCheckBounds(&shape->bounds,pt->x,pt->y); _XkbCheckBounds(&shape->bounds,pt->x,pt->y);
} }
if (outline->num_points<2) {
_XkbCheckBounds(&shape->bounds,0,0);
}
} }
return True; return True;
} }
...@@ -248,9 +251,15 @@ Status rtrn; ...@@ -248,9 +251,15 @@ Status rtrn;
char *name,*value; char *name,*value;
ok= True; ok= True;
for (i=0;(i<rep->nProperties)&&ok;i++) { for (i=0;(i<rep->nProperties)&&ok;i++) {
name=NULL;
value=NULL;
ok= _XkbGetReadBufferCountedString(buf,&name)&&ok; ok= _XkbGetReadBufferCountedString(buf,&name)&&ok;
ok= _XkbGetReadBufferCountedString(buf,&value)&&ok; ok= _XkbGetReadBufferCountedString(buf,&value)&&ok;
ok= ok&&(XkbAddGeomProperty(geom,name,value)!=NULL); ok= ok&&(XkbAddGeomProperty(geom,name,value)!=NULL);
if (name)
_XkbFree(name);
if (value)
_XkbFree(value);
} }
if (ok) rtrn= Success; if (ok) rtrn= Success;
else rtrn= BadLength; else rtrn= BadLength;
...@@ -293,10 +302,15 @@ Status rtrn; ...@@ -293,10 +302,15 @@ Status rtrn;
register int i; register int i;
char *spec; char *spec;
for (i=0;i<rep->nColors;i++) { for (i=0;i<rep->nColors;i++) {
spec = NULL;
if (!_XkbGetReadBufferCountedString(buf,&spec)) if (!_XkbGetReadBufferCountedString(buf,&spec))
return BadLength; rtrn = BadLength;
if (XkbAddGeomColor(geom,spec,geom->num_colors)==NULL) else if (XkbAddGeomColor(geom,spec,geom->num_colors)==NULL)
return BadAlloc; rtrn = BadAlloc;
if (spec)
_XkbFree(spec);
if (rtrn != Success)
return rtrn;
} }
return Success; return Success;
} }
...@@ -625,21 +639,27 @@ XkbGetGeometry(Display *dpy,XkbDescPtr xkb) ...@@ -625,21 +639,27 @@ XkbGetGeometry(Display *dpy,XkbDescPtr xkb)
{ {
xkbGetGeometryReq *req; xkbGetGeometryReq *req;
xkbGetGeometryReply rep; xkbGetGeometryReply rep;
Status status;
if ( (!xkb) || (dpy->flags & XlibDisplayNoXkb) || if ( (!xkb) || (dpy->flags & XlibDisplayNoXkb) ||
(!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
return BadAccess; return BadAccess;
LockDisplay(dpy);
GetReq(kbGetGeometry, req); GetReq(kbGetGeometry, req);
req->reqType = dpy->xkb_info->codes->major_opcode; req->reqType = dpy->xkb_info->codes->major_opcode;
req->xkbReqType = X_kbGetGeometry; req->xkbReqType = X_kbGetGeometry;
req->deviceSpec = xkb->device_spec; req->deviceSpec = xkb->device_spec;
req->name= None; req->name= None;
if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) if (!_XReply(dpy, (xReply *)&rep, 0, xFalse))
return BadImplementation; status = BadImplementation;
if (!rep.found) else if (!rep.found)
return BadName; status = BadName;
return _XkbReadGetGeometryReply(dpy,&rep,xkb,NULL); else
status = _XkbReadGetGeometryReply(dpy,&rep,xkb,NULL);
UnlockDisplay(dpy);
SyncHandle();
return status;
} }
Status Status
...@@ -647,20 +667,26 @@ XkbGetNamedGeometry(Display *dpy,XkbDescPtr xkb,Atom name) ...@@ -647,20 +667,26 @@ XkbGetNamedGeometry(Display *dpy,XkbDescPtr xkb,Atom name)
{ {
xkbGetGeometryReq *req; xkbGetGeometryReq *req;
xkbGetGeometryReply rep; xkbGetGeometryReply rep;
Status status;
if ( (name==None) || (dpy->flags & XlibDisplayNoXkb) || if ( (name==None) || (dpy->flags & XlibDisplayNoXkb) ||
(!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)) ) (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)) )
return BadAccess; return BadAccess;
LockDisplay(dpy);
GetReq(kbGetGeometry, req); GetReq(kbGetGeometry, req);
req->reqType = dpy->xkb_info->codes->major_opcode; req->reqType = dpy->xkb_info->codes->major_opcode;
req->xkbReqType = X_kbGetGeometry; req->xkbReqType = X_kbGetGeometry;
req->deviceSpec = xkb->device_spec; req->deviceSpec = xkb->device_spec;
req->name= (CARD32)name; req->name= (CARD32)name;
if ((!_XReply(dpy, (xReply *)&rep, 0, xFalse))||(!rep.found)) if ((!_XReply(dpy, (xReply *)&rep, 0, xFalse))||(!rep.found))
return BadImplementation; status = BadImplementation;
if (!rep.found) else if (!rep.found)
return BadName; status = BadName;
return _XkbReadGetGeometryReply(dpy,&rep,xkb,NULL); else
status = _XkbReadGetGeometryReply(dpy,&rep,xkb,NULL);
UnlockDisplay(dpy);
SyncHandle();
return status;
} }
...@@ -23,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH ...@@ -23,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE. THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/ ********************************************************/
/* $XFree86$ */
#define NEED_MAP_READERS #define NEED_MAP_READERS
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
......
...@@ -714,7 +714,10 @@ XkbGetKeyExplicitComponents( Display * dpy, ...@@ -714,7 +714,10 @@ XkbGetKeyExplicitComponents( Display * dpy,
if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code)) if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code))
bzero(&xkb->server->explicit[first],num); bzero(&xkb->server->explicit[first],num);
} }
if (xkb)
status= _XkbHandleGetMapReply(dpy, xkb); status= _XkbHandleGetMapReply(dpy, xkb);
else
status = BadMatch;
UnlockDisplay(dpy); UnlockDisplay(dpy);
SyncHandle(); SyncHandle();
...@@ -743,7 +746,10 @@ XkbGetKeyModifierMap(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb) ...@@ -743,7 +746,10 @@ XkbGetKeyModifierMap(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code)) if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code))
bzero(&xkb->map->modmap[first],num); bzero(&xkb->map->modmap[first],num);
} }
if (xkb)
status= _XkbHandleGetMapReply(dpy, xkb); status= _XkbHandleGetMapReply(dpy, xkb);
else
status = BadMatch;
UnlockDisplay(dpy); UnlockDisplay(dpy);
SyncHandle(); SyncHandle();
...@@ -772,7 +778,11 @@ XkbGetKeyVirtualModMap(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb) ...@@ -772,7 +778,11 @@ XkbGetKeyVirtualModMap(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code)) if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code))
bzero(&xkb->server->vmodmap[first],num*sizeof(unsigned short)); bzero(&xkb->server->vmodmap[first],num*sizeof(unsigned short));
} }
if (xkb)
status= _XkbHandleGetMapReply(dpy, xkb); status= _XkbHandleGetMapReply(dpy, xkb);
else
status = BadMatch;
UnlockDisplay(dpy); UnlockDisplay(dpy);
SyncHandle(); SyncHandle();
...@@ -809,8 +819,8 @@ XkbGetMapChanges(Display *dpy,XkbDescPtr xkb,XkbMapChangesPtr changes) ...@@ -809,8 +819,8 @@ XkbGetMapChanges(Display *dpy,XkbDescPtr xkb,XkbMapChangesPtr changes)
req->firstVModMapKey = changes->first_vmodmap_key; req->firstVModMapKey = changes->first_vmodmap_key;
req->nVModMapKeys = changes->num_vmodmap_keys; req->nVModMapKeys = changes->num_vmodmap_keys;
status= _XkbHandleGetMapReply(dpy, xkb); status= _XkbHandleGetMapReply(dpy, xkb);
SyncHandle();
UnlockDisplay(dpy); UnlockDisplay(dpy);
SyncHandle();
return status; return status;
} }
UnlockDisplay(dpy); UnlockDisplay(dpy);
......
...@@ -23,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH ...@@ -23,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE. THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/ ********************************************************/
/* $XFree86$ */
#define NEED_MAP_READERS #define NEED_MAP_READERS
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
......
...@@ -313,6 +313,8 @@ XkbClientMapPtr map; ...@@ -313,6 +313,8 @@ XkbClientMapPtr map;
tmp= XkbNumRequiredTypes+1; tmp= XkbNumRequiredTypes+1;
if (XkbAllocClientMap(xkb,XkbKeyTypesMask,tmp)!=Success) if (XkbAllocClientMap(xkb,XkbKeyTypesMask,tmp)!=Success)
return NULL; return NULL;
if (!map)
map = xkb->map;
tmp= 0; tmp= 0;
if (map->num_types<=XkbKeypadIndex) if (map->num_types<=XkbKeypadIndex)
tmp|= XkbKeypadMask; tmp|= XkbKeypadMask;
......
...@@ -474,8 +474,11 @@ unsigned changed,tmp; ...@@ -474,8 +474,11 @@ unsigned changed,tmp;
unsigned int new_vmodmask; unsigned int new_vmodmask;
changed|= XkbKeyActionsMask; changed|= XkbKeyActionsMask;
pActs= XkbResizeKeyActions(xkb,key,nSyms); pActs= XkbResizeKeyActions(xkb,key,nSyms);
if (!pActs) if (!pActs) {
if (nSyms > IBUF_SIZE)
Xfree(interps);
return False; return False;
}
new_vmodmask= 0; new_vmodmask= 0;
for (n=0;n<nSyms;n++) { for (n=0;n<nSyms;n++) {
if (interps[n]) { if (interps[n]) {
......
...@@ -147,7 +147,7 @@ _XkbPeekAtReadBuffer(XkbReadBufferPtr from,int size) ...@@ -147,7 +147,7 @@ _XkbPeekAtReadBuffer(XkbReadBufferPtr from,int size)
{ {
if ((from==NULL)||(from->error)||(size<1)|| if ((from==NULL)||(from->error)||(size<1)||
(_XkbReadBufferDataLeft(from)<size)) (_XkbReadBufferDataLeft(from)<size))
return 0; return NULL;
return from->data; return from->data;
} }
...@@ -157,7 +157,7 @@ _XkbGetReadBufferPtr(XkbReadBufferPtr from,int size) ...@@ -157,7 +157,7 @@ _XkbGetReadBufferPtr(XkbReadBufferPtr from,int size)
char *ptr; char *ptr;
if ((from==NULL)||(from->error)||(size<1)|| if ((from==NULL)||(from->error)||(size<1)||
(_XkbReadBufferDataLeft(from)<size)) (_XkbReadBufferDataLeft(from)<size))
return 0; return NULL;
ptr= from->data; ptr= from->data;
from->data+= size; from->data+= size;
return ptr; return ptr;
......
...@@ -441,6 +441,7 @@ Status ret; ...@@ -441,6 +441,7 @@ Status ret;
(!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
return BadAccess; return BadAccess;
LockDisplay(dpy);
GetReq(kbSetGeometry, req); GetReq(kbSetGeometry, req);
req->reqType = dpy->xkb_info->codes->major_opcode; req->reqType = dpy->xkb_info->codes->major_opcode;
req->xkbReqType = X_kbSetGeometry; req->xkbReqType = X_kbSetGeometry;
......
...@@ -320,7 +320,7 @@ CARD8 * wire; ...@@ -320,7 +320,7 @@ CARD8 * wire;
if ((req->present&XkbExplicitComponentsMask)==0) if ((req->present&XkbExplicitComponentsMask)==0)
return; return;
first= req->firstKeyExplicit; first= req->firstKeyExplicit;
last= first+req->nKeyExplicit; last= first+req->nKeyExplicit - 1;
i= XkbPaddedSize((req->totalKeyExplicit*2)); i= XkbPaddedSize((req->totalKeyExplicit*2));
BufAlloc(CARD8 *,wire,i); BufAlloc(CARD8 *,wire,i);
for (i=first;i<=last;i++) { for (i=first;i<=last;i++) {
......
...@@ -224,6 +224,8 @@ XkbGetNamedDeviceIndicator( Display * dpy, ...@@ -224,6 +224,8 @@ XkbGetNamedDeviceIndicator( Display * dpy,
SyncHandle(); SyncHandle();
return False; return False;
} }
UnlockDisplay(dpy);
SyncHandle();
if ((!rep.found)||(!rep.supported)) if ((!rep.found)||(!rep.supported))
return False; return False;
if (pNdxRtrn!=NULL) if (pNdxRtrn!=NULL)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment