Commit 3d8e85c4 authored by Reinhard Tartler's avatar Reinhard Tartler

Imported nxcompshad-3.3.0-3.tar.gz

Summary: Imported nxcompshad-3.3.0-3.tar.gz Keywords: Imported nxcompshad-3.3.0-3.tar.gz into Git repository
parent 3b440466
ChangeLog: ChangeLog:
nxcompshad-3.3.0-3
- Fixed TR01G02158. Keymap initialization could be incorrect because
of a type mismatch on 64 bit platforms.
nxcompshad-3.3.0-2 nxcompshad-3.3.0-2
- Updated VERSION. - Updated VERSION.
......
...@@ -466,6 +466,5 @@ void NXShadowInitKeymap(void *keysyms) ...@@ -466,6 +466,5 @@ void NXShadowInitKeymap(void *keysyms)
{ {
NXShadowKeymap = (KeySymsPtr) keysyms; NXShadowKeymap = (KeySymsPtr) keysyms;
logTest("NXShadowInitKeymap","KeySyms pointer [0x%p] mapWidth [%d]", logTest("NXShadowInitKeymap","KeySyms pointer [0x%p]", (void *)NXShadowKeymap);
(void *)NXShadowKeymap, NXShadowKeymap -> mapWidth);
} }
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#undef DEBUG #undef DEBUG
#include <X11/Xlibint.h> #include <X11/Xlibint.h>
#include <X11/Xproto.h>
#include <X11/extensions/XTest.h> #include <X11/extensions/XTest.h>
#include <X11/keysym.h> #include <X11/keysym.h>
#include <string.h> #include <string.h>
...@@ -59,6 +60,8 @@ static KeyPressedRec *shadowKeyPressedPtr = NULL; ...@@ -59,6 +60,8 @@ static KeyPressedRec *shadowKeyPressedPtr = NULL;
static KeySym *shadowKeysyms = NULL; static KeySym *shadowKeysyms = NULL;
static KeySym *masterKeysyms = NULL; static KeySym *masterKeysyms = NULL;
static KeySym *shadowKeymap = NULL;
static int shadowMinKey, shadowMaxKey, shadowMapWidth; static int shadowMinKey, shadowMaxKey, shadowMapWidth;
static int masterMinKey, masterMaxKey, masterMapWidth; static int masterMinKey, masterMaxKey, masterMapWidth;
...@@ -409,12 +412,35 @@ void Poller::shmInit(void) ...@@ -409,12 +412,35 @@ void Poller::shmInit(void)
void Poller::keymapShadowInit(Display *display) void Poller::keymapShadowInit(Display *display)
{ {
if (NXShadowKeymap) int i, len;
CARD32 *map;
if (NXShadowKeymap != NULL)
{ {
shadowMinKey = NXShadowKeymap -> minKeyCode; shadowMinKey = NXShadowKeymap -> minKeyCode;
shadowMaxKey = NXShadowKeymap -> maxKeyCode; shadowMaxKey = NXShadowKeymap -> maxKeyCode;
shadowMapWidth = NXShadowKeymap -> mapWidth; shadowMapWidth = NXShadowKeymap -> mapWidth;
shadowKeysyms = NXShadowKeymap -> map;
len = (shadowMaxKey - shadowMinKey + 1) * shadowMapWidth;
map = (CARD32 *) NXShadowKeymap -> map;
if (shadowKeymap != NULL)
{
free(shadowKeymap);
}
shadowKeymap = (KeySym *) malloc(len * sizeof(KeySym));
if (shadowKeymap != NULL)
{
for (i = 0; i < len; i++)
{
shadowKeymap[i] = map[i];
}
shadowKeysyms = shadowKeymap;
}
} }
if (shadowKeysyms == NULL) if (shadowKeysyms == NULL)
...@@ -426,13 +452,16 @@ void Poller::keymapShadowInit(Display *display) ...@@ -426,13 +452,16 @@ void Poller::keymapShadowInit(Display *display)
} }
#ifdef DEBUG #ifdef DEBUG
if (shadowKeysyms) if (shadowKeysyms != NULL)
{ {
for (int i = 0; i < (shadowMaxKey - shadowMinKey) * shadowMapWidth; i++) for (i = 0; i < (shadowMaxKey - shadowMinKey + 1) * shadowMapWidth; i++)
{ {
logDebug("Poller::keymapShadowInit", "keycode %d - keysym %x %s", if (i % shadowMapWidth == 0)
(int)(i / shadowMapWidth), (unsigned int)shadowKeysyms[i], {
XKeysymToString(shadowKeysyms[i])); logDebug("Poller::keymapShadowInit", "keycode [%d]", (int) (i / shadowMapWidth));
}
logDebug("\tkeysym", " [%x] [%s]", (unsigned int) shadowKeysyms[i], XKeysymToString(shadowKeysyms[i]));
} }
} }
#endif #endif
...@@ -446,13 +475,16 @@ void Poller::keymapMasterInit() ...@@ -446,13 +475,16 @@ void Poller::keymapMasterInit()
&masterMapWidth); &masterMapWidth);
#ifdef DEBUG #ifdef DEBUG
if (masterKeysyms) if (masterKeysyms != NULL)
{ {
for (int i = 0; i < (masterMaxKey - masterMinKey) * masterMapWidth; i++) for (int i = 0; i < (masterMaxKey - masterMinKey + 1) * masterMapWidth; i++)
{ {
logDebug("Poller::keymapMasterInit", "keycode %d - keysym %x %s", if (i % masterMapWidth == 0)
(int)(i / masterMapWidth), (unsigned int)masterKeysyms[i], {
XKeysymToString(masterKeysyms[i])); logDebug("Poller::keymapMasterInit", "keycode [%d]", (int) (i / masterMapWidth));
}
logDebug("\tkeysym", " [%x] [%s]", (unsigned int) masterKeysyms[i], XKeysymToString(masterKeysyms[i]));
} }
} }
#endif #endif
......
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