diff options
Diffstat (limited to 'xorg-server/xkb')
-rw-r--r-- | xorg-server/xkb/ddxList.c | 7 | ||||
-rw-r--r-- | xorg-server/xkb/ddxLoad.c | 6 | ||||
-rw-r--r-- | xorg-server/xkb/makefile | 42 | ||||
-rw-r--r-- | xorg-server/xkb/xkb.c | 2 | ||||
-rw-r--r-- | xorg-server/xkb/xkbActions.c | 9 | ||||
-rw-r--r-- | xorg-server/xkb/xkbInit.c | 4 | ||||
-rw-r--r-- | xorg-server/xkb/xkbUtils.c | 4 |
7 files changed, 67 insertions, 7 deletions
diff --git a/xorg-server/xkb/ddxList.c b/xorg-server/xkb/ddxList.c index ce3445bda..e4e32075b 100644 --- a/xorg-server/xkb/ddxList.c +++ b/xorg-server/xkb/ddxList.c @@ -211,7 +211,12 @@ char tmpname[PATH_MAX]; free(buf);
buf = malloc(PATH_MAX * sizeof(char));
if (!buf)
- return BadAlloc;
+ {
+#ifdef WIN32
+ unlink(tmpname);
+#endif
+ return BadAlloc;
+ }
while ((status==Success)&&((tmp=fgets(buf,PATH_MAX,in))!=NULL)) {
unsigned flags;
register unsigned int i;
diff --git a/xorg-server/xkb/ddxLoad.c b/xorg-server/xkb/ddxLoad.c index 6742537e7..b8fd71776 100644 --- a/xorg-server/xkb/ddxLoad.c +++ b/xorg-server/xkb/ddxLoad.c @@ -74,6 +74,8 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #ifdef WIN32
+#define strdup _strdup
+
#include <X11/Xwindows.h>
const char*
Win32TempDir()
@@ -269,6 +271,10 @@ XkbDDXCompileKeymapByNames( XkbDescPtr xkb, }
if (buf != NULL)
free(buf);
+#ifdef WIN32
+ /* remove the temporary file */
+ unlink(tmpname);
+#endif
return TRUE;
}
else
diff --git a/xorg-server/xkb/makefile b/xorg-server/xkb/makefile new file mode 100644 index 000000000..e04599e52 --- /dev/null +++ b/xorg-server/xkb/makefile @@ -0,0 +1,42 @@ +DEFINES += HAVE_XKB_CONFIG_H + +DDX_SRCS = \ + ddxBeep.c \ + ddxCtrls.c \ + ddxLEDs.c \ + ddxLoad.c \ + ddxList.c + +DIX_SRCS = \ + xkb.c \ + xkbUtils.c \ + xkbEvents.c \ + xkbAccessX.c \ + xkbSwap.c \ + xkbLEDs.c \ + xkbInit.c \ + xkbActions.c \ + xkbPrKeyEv.c + +# this should be replaced by a common library or something, ideally -d +XKBFILE_SRCS = \ + maprules.c \ + xkmread.c \ + xkbtext.c \ + xkbfmisc.c \ + xkbout.c + +X11_SRCS = \ + XKBMisc.c \ + XKBAlloc.c \ + XKBGAlloc.c \ + XKBMAlloc.c + +# ends up unused... +# XI_SRCS = xkbPrOtherEv.c + +CSRCS = $(DDX_SRCS) $(DIX_SRCS) $(XI_SRCS) $(XKBFILE_SRCS) \ + $(X11_SRCS) ddxVT.c ddxPrivate.c ddxKillSrv.c + +LIBRARY=libxkb + diff --git a/xorg-server/xkb/xkb.c b/xorg-server/xkb/xkb.c index f1cae4945..b491f8240 100644 --- a/xorg-server/xkb/xkb.c +++ b/xorg-server/xkb/xkb.c @@ -5580,6 +5580,8 @@ ProcXkbGetKbdByName(ClientPtr client) if (!(client->xkbClientFlags&_XkbClientInitialized))
return BadAccess;
+ memset(&mrep,0,sizeof(mrep)); //MH
+
CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, access_mode);
xkb = dev->key->xkbInfo->desc;
diff --git a/xorg-server/xkb/xkbActions.c b/xorg-server/xkb/xkbActions.c index 48eeeb772..44675c9fe 100644 --- a/xorg-server/xkb/xkbActions.c +++ b/xorg-server/xkb/xkbActions.c @@ -948,15 +948,15 @@ _XkbFilterDeviceBtn( XkbSrvInfoPtr xkbi, DeviceIntPtr dev;
int button;
- if (xkbi->device == inputInfo.keyboard)
- return 0;
-
if (filter->keycode==0) { /* initial press */
_XkbLookupButtonDevice(&dev, pAction->devbtn.device, serverClient,
DixUnknownAccess, &button);
if (!dev || !dev->public.on)
return 1;
+ if (xkbi->device == inputInfo.keyboard)
+ return 0;
+
button= pAction->devbtn.button;
if ((button<1)||(button>dev->button->numButtons))
return 1;
@@ -1331,6 +1331,7 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) int nevents, i;
DeviceIntPtr ptr;
int gpe_flags = 0;
+ int Point[]={x, y};
if (!dev->u.master)
ptr = dev;
@@ -1346,7 +1347,7 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) OsBlockSignals();
nevents = GetPointerEvents(events, ptr,
MotionNotify, 0,
- gpe_flags, 0, 2, (int[]){x, y});
+ gpe_flags, 0, 2, Point);
OsReleaseSignals();
for (i = 0; i < nevents; i++)
diff --git a/xorg-server/xkb/xkbInit.c b/xorg-server/xkb/xkbInit.c index 6defefa50..98483857c 100644 --- a/xorg-server/xkb/xkbInit.c +++ b/xorg-server/xkb/xkbInit.c @@ -88,8 +88,8 @@ typedef struct _SrvXkmInfo { #define XKB_DFLT_RULES_PROP TRUE
#endif
-char * XkbBaseDirectory= XKB_BASE_DIRECTORY;
-char * XkbBinDirectory= XKB_BIN_DIRECTORY;
+const char * XkbBaseDirectory= XKB_BASE_DIRECTORY;
+const char * XkbBinDirectory= XKB_BIN_DIRECTORY;
static int XkbWantAccessX= 0;
static char * XkbRulesDflt= NULL;
diff --git a/xorg-server/xkb/xkbUtils.c b/xorg-server/xkb/xkbUtils.c index b0e643e62..63c99e51b 100644 --- a/xorg-server/xkb/xkbUtils.c +++ b/xorg-server/xkb/xkbUtils.c @@ -69,6 +69,10 @@ DEALINGS IN THE SOFTWARE. #include "xkbgeom.h"
#include "xkb.h"
+#ifdef _MSC_VER
+#define strdup _strdup
+#endif
+
/***====================================================================***/
int
|