Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nx-libs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dimbor
nx-libs
Commits
6f5e20bc
Commit
6f5e20bc
authored
Oct 10, 2011
by
Reinhard Tartler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Imported nxagent-3.3.0-9.tar.gz
Summary: Imported nxagent-3.3.0-9.tar.gz Keywords: Imported nxagent-3.3.0-9.tar.gz into Git repository
parent
45b970f2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
338 additions
and
46 deletions
+338
-46
CHANGELOG
nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
+21
-0
Events.c
nx-X11/programs/Xserver/hw/nxagent/Events.c
+24
-16
Font.c
nx-X11/programs/Xserver/hw/nxagent/Font.c
+37
-4
Keyboard.c
nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
+0
-0
Keyboard.h
nx-X11/programs/Xserver/hw/nxagent/Keyboard.h
+4
-0
Reconnect.c
nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
+16
-15
Render.c
nx-X11/programs/Xserver/hw/nxagent/Render.c
+6
-3
NXevents.c
nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c
+115
-4
NXevents.c.NX.original
nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c.NX.original
+115
-4
No files found.
nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
View file @
6f5e20bc
ChangeLog:
nxagent-3.3.0-9
- Added /usr/NX/share/base to alternate font paths. This would fix
TR11F02130 if fonts fixed and cursor are installed there.
- Changed Keyboard initialization and reset. This change should fix
TR11F02129, TR11F02131, TR11F02132.
nxagent-3.3.0-8
- Fixed TR12F02144. Image bits of render glyphs are copied before they
are cleaned. This will avoid a memory corruption.
- Fixed TR12F02145. When dispatching a MotionNotify event, check if a
top-level window has been entered before trying to show the pulldown
dialog.
nxagent-3.3.0-7
- Added debug code for pointer input.
nxagent-3.3.0-6
- Fixed compile warnings.
...
...
nx-X11/programs/Xserver/hw/nxagent/Events.c
View file @
6f5e20bc
...
...
@@ -63,7 +63,13 @@
#include "NXproto.h"
#include "xfixesproto.h"
#define Window XlibWindow
#define Atom XlibAtom
#define Time XlibXID
#include <X11/extensions/Xfixes.h>
#undef Window
#undef Atom
#undef Time
#ifdef NXAGENT_FIXKEYS
#include "inputstr.h"
...
...
@@ -789,8 +795,9 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
}
x
.
u
.
u
.
type
=
KeyRelease
;
x
.
u
.
u
.
detail
=
X
.
xkey
.
keycode
;
x
.
u
.
keyButtonPointer
.
time
=
nxagentLastKeyPressTime
+
(
X
.
xkey
.
time
-
nxagentLastServerTime
);
x
.
u
.
u
.
detail
=
nxagentConvertKeycode
(
X
.
xkey
.
keycode
);
x
.
u
.
keyButtonPointer
.
time
=
nxagentLastKeyPressTime
+
(
X
.
xkey
.
time
-
nxagentLastServerTime
);
nxagentLastServerTime
=
X
.
xkey
.
time
;
...
...
@@ -918,7 +925,7 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"nxagentDispatchEvents: Going to handle new Button
Press
event.
\n
"
);
fprintf
(
stderr
,
"nxagentDispatchEvents: Going to handle new Button
Release
event.
\n
"
);
}
#endif
...
...
@@ -1016,18 +1023,17 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
nxagentLastEnteredWindow
=
pWin
;
}
if
(
nxagentPulldownDialogPid
==
0
&&
(
X
.
xmotion
.
y_root
<
nxagentLastEnteredTopLevelWindow
->
drawable
.
y
+
4
))
if
(
nxagentPulldownDialogPid
==
0
&&
nxagentLastEnteredTopLevelWindow
&&
(
X
.
xmotion
.
y_root
<
nxagentLastEnteredTopLevelWindow
->
drawable
.
y
+
4
))
{
if
(
pWin
&&
nxagentLastEnteredTopLevelWindow
&&
nxagentClientIsDialog
(
wClient
(
pWin
))
==
0
&&
nxagentLastEnteredTopLevelWindow
->
parent
==
WindowTable
[
0
]
&&
nxagentLastEnteredTopLevelWindow
->
overrideRedirect
==
False
&&
X
.
xmotion
.
x_root
>
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
x
+
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
width
>>
1
)
-
50
)
&&
X
.
xmotion
.
x_root
<
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
x
+
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
width
>>
1
)
+
50
)
&&
nxagentOption
(
Menu
)
==
1
)
if
(
pWin
&&
nxagentClientIsDialog
(
wClient
(
pWin
))
==
0
&&
nxagentLastEnteredTopLevelWindow
->
parent
==
WindowTable
[
0
]
&&
nxagentLastEnteredTopLevelWindow
->
overrideRedirect
==
False
&&
X
.
xmotion
.
x_root
>
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
x
+
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
width
>>
1
)
-
50
)
&&
X
.
xmotion
.
x_root
<
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
x
+
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
width
>>
1
)
+
50
)
&&
nxagentOption
(
Menu
)
==
1
)
{
nxagentPulldownDialog
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
id
);
}
...
...
@@ -1052,7 +1058,8 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"nxagentDispatchEvents: Adding motion event [%d, %d] to the queue.
\n
"
,
x
.
u
.
keyButtonPointer
.
rootX
,
x
.
u
.
keyButtonPointer
.
rootY
);
fprintf
(
stderr
,
"nxagentDispatchEvents: Adding motion event [%d, %d] to the queue.
\n
"
,
x
.
u
.
keyButtonPointer
.
rootX
,
x
.
u
.
keyButtonPointer
.
rootY
);
}
#endif
...
...
@@ -1911,8 +1918,9 @@ int nxagentHandleKeyPress(XEvent *X, enum HandleEventResult *result)
nxagentLastEventTime
=
nxagentLastKeyPressTime
=
GetTimeInMillis
();
x
.
u
.
u
.
type
=
KeyPress
;
x
.
u
.
u
.
detail
=
X
->
xkey
.
keycode
;
x
.
u
.
u
.
detail
=
nxagentConvertKeycode
(
X
->
xkey
.
keycode
)
;
x
.
u
.
keyButtonPointer
.
time
=
nxagentLastKeyPressTime
;
nxagentLastServerTime
=
X
->
xkey
.
time
;
...
...
nx-X11/programs/Xserver/hw/nxagent/Font.c
View file @
6f5e20bc
...
...
@@ -65,26 +65,34 @@ is" without express or implied warranty.
#define NXAGENT_ALTERNATE_FONT_DIR "/usr/share/X11/fonts"
#define NXAGENT_ALTERNATE_FONT_DIR_2 "/usr/share/fonts/X11"
#define NXAGENT_ALTERNATE_FONT_DIR_3 "/usr/share/fonts"
#define NXAGENT_ALTERNATE_FONT_DIR_4 "/usr/NX/share/fonts"
#define NXAGENT_DEFAULT_FONT_PATH \
"/usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/Speedo/,\
/usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/75dpi/,\
/usr/X11R6/lib/X11/fonts/100dpi/,/usr/X11R6/lib/X11/fonts/TTF/"
/usr/X11R6/lib/X11/fonts/100dpi/,/usr/X11R6/lib/X11/fonts/TTF/,\
/usr/NX/share/fonts/base"
#define NXAGENT_ALTERNATE_FONT_PATH \
"/usr/share/X11/fonts/misc/,/usr/share/X11/fonts/Speedo/,\
/usr/share/X11/fonts/Type1/,/usr/share/X11/fonts/75dpi/,\
/usr/share/X11/fonts/100dpi/,/usr/share/X11/fonts/TTF/"
/usr/share/X11/fonts/100dpi/,/usr/share/X11/fonts/TTF/,\
/usr/NX/share/fonts/base"
#define NXAGENT_ALTERNATE_FONT_PATH_2 \
"/usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Speedo/,\
/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,\
/usr/share/fonts/X11/100dpi/,/usr/share/fonts/X11/TTF/"
/usr/share/fonts/X11/100dpi/,/usr/share/fonts/X11/TTF/,\
/usr/NX/share/fonts/base"
#define NXAGENT_ALTERNATE_FONT_PATH_3 \
"/usr/share/fonts/misc/,/usr/share/fonts/Speedo/,\
/usr/share/fonts/Type1/,/usr/share/fonts/75dpi/,\
/usr/share/fonts/100dpi/,/usr/share/fonts/TTF/"
/usr/share/fonts/100dpi/,/usr/share/fonts/TTF/,\
/usr/NX/share/fonts/base"
#define NXAGENT_ALTERNATE_FONT_PATH_4 \
"/usr/NX/share/fonts/base"
#undef NXAGENT_FONTCACHE_DEBUG
#undef NXAGENT_RECONNECT_FONT_DEBUG
...
...
@@ -1553,6 +1561,31 @@ void nxagentVerifyDefaultFontPath(void)
strcat
(
fontPath
,
NXAGENT_ALTERNATE_FONT_PATH_3
);
}
if
(
stat
(
NXAGENT_ALTERNATE_FONT_DIR_4
,
&
dirStat
)
==
0
&&
S_ISDIR
(
dirStat
.
st_mode
)
!=
0
)
{
/*
* Let's use the "/usr/NX/share/fonts" path.
*/
#ifdef TEST
fprintf
(
stderr
,
"nxagentVerifyDefaultFontPath: Assuming fonts in directory [%s].
\n
"
,
validateString
(
NXAGENT_ALTERNATE_FONT_DIR_4
));
#endif
if
(
*
fontPath
!=
'\0'
)
{
fontPath
=
realloc
(
fontPath
,
strlen
(
fontPath
)
+
strlen
(
NXAGENT_ALTERNATE_FONT_PATH_4
)
+
2
);
strcat
(
fontPath
,
","
);
}
else
{
fontPath
=
realloc
(
fontPath
,
strlen
(
fontPath
)
+
strlen
(
NXAGENT_ALTERNATE_FONT_PATH_4
)
+
1
);
}
strcat
(
fontPath
,
NXAGENT_ALTERNATE_FONT_PATH_4
);
}
if
(
*
fontPath
==
'\0'
)
{
#ifdef WARNING
...
...
nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
View file @
6f5e20bc
This diff is collapsed.
Click to expand it.
nx-X11/programs/Xserver/hw/nxagent/Keyboard.h
View file @
6f5e20bc
...
...
@@ -109,6 +109,10 @@ void nxagentEnableXkbExtension(void);
void
nxagentTuneXkbWrapper
(
void
);
void
nxagentResetKeycodeConversion
(
void
);
#endif
CARD8
nxagentConvertKeycode
(
CARD8
k
);
#endif
/* __Keyboard_H__ */
nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
View file @
6f5e20bc
...
...
@@ -547,28 +547,29 @@ Bool nxagentReconnectSession(void)
goto
nxagentReconnectError
;
}
if
(
nxagentOption
(
ResetKeyboardAtResume
))
if
(
nxagentOption
(
ResetKeyboardAtResume
)
==
1
&&
(
nxagentKeyboard
==
NULL
||
nxagentOldKeyboard
==
NULL
||
strcmp
(
nxagentKeyboard
,
nxagentOldKeyboard
)
!=
0
||
strcmp
(
nxagentKeyboard
,
"query"
)
==
0
))
{
if
(
nxagentKeyboard
==
NULL
||
nxagentOldKeyboard
==
NULL
||
strcmp
(
nxagentKeyboard
,
nxagentOldKeyboard
)
!=
0
||
strcmp
(
nxagentKeyboard
,
"query"
)
==
0
)
if
(
nxagentResetKeyboard
()
==
0
)
{
if
(
nxagent
ResetKeyboard
()
==
0
)
#ifdef WARNING
if
(
nxagent
Verbose
==
1
)
{
#ifdef WARNING
if
(
nxagentVerbose
==
1
)
{
fprintf
(
stderr
,
"nxagentReconnect: Failed to reset keyboard device.
\n
"
);
}
#endif
fprintf
(
stderr
,
"nxagentReconnect: Failed to reset keyboard device.
\n
"
);
}
#endif
failedStep
=
WINDOW_STEP
;
failedStep
=
WINDOW_STEP
;
goto
nxagentReconnectError
;
}
goto
nxagentReconnectError
;
}
}
else
{
nxagentResetKeycodeConversion
();
}
nxagentXkbState
.
Initialized
=
0
;
...
...
nx-X11/programs/Xserver/hw/nxagent/Render.c
View file @
6f5e20bc
...
...
@@ -2270,8 +2270,7 @@ void nxagentAddGlyphs(GlyphSetPtr glyphSet, Glyph *gids, xGlyphInfo *gi,
normalizedImages
=
NULL
;
if
(
glyphDepths
[
glyphSet
->
fdepth
]
==
1
&&
nxagentServerOrder
()
!=
BitmapBitOrder
(
nxagentDisplay
))
if
(
sizeImages
>
0
)
{
normalizedImages
=
xalloc
(
sizeImages
);
...
...
@@ -2279,7 +2278,11 @@ void nxagentAddGlyphs(GlyphSetPtr glyphSet, Glyph *gids, xGlyphInfo *gi,
{
memcpy
(
normalizedImages
,
images
,
sizeImages
);
BitOrderInvert
((
unsigned
char
*
)
normalizedImages
,
sizeImages
);
if
(
glyphDepths
[
glyphSet
->
fdepth
]
==
1
&&
nxagentServerOrder
()
!=
BitmapBitOrder
(
nxagentDisplay
))
{
BitOrderInvert
((
unsigned
char
*
)
normalizedImages
,
sizeImages
);
}
}
else
{
...
...
nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c
View file @
6f5e20bc
...
...
@@ -189,6 +189,10 @@ xEvent *xeviexE;
#include "Windows.h"
#include "Args.h"
#ifdef NX_DEBUG_INPUT
extern
int
nxagentDebugInput
;
#endif
extern
Display
*
nxagentDisplay
;
extern
WindowPtr
nxagentLastEnteredWindow
;
...
...
@@ -1682,11 +1686,28 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
int
i
;
int
type
;
#ifdef DEBUG
#ifdef NX_DEBUG_INPUT
if
(
grab
&&
nxagentDebugInput
&&
grab
->
window
)
{
fprintf
(
stderr
,
"TryClientEvents: Grab window is [0x%x].
\n
"
,
(
unsigned
int
)
grab
->
window
->
drawable
.
id
);
if
(
!
SameClient
(
grab
,
client
))
fprintf
(
stderr
,
"TryClientEvents: Events are going to be "
"discarded.
\n
"
);
}
#endif
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
fprintf
(
stderr
,
"Event([%d, %d], mask=0x%x), client=%d"
,
pEvents
->
u
.
u
.
type
,
pEvents
->
u
.
u
.
detail
,
(
unsigned
int
)
mask
,
client
->
index
);
#else
if
(
debug_events
)
ErrorF
(
"Event([%d, %d], mask=0x%x), client=%d"
,
pEvents
->
u
.
u
.
type
,
pEvents
->
u
.
u
.
detail
,
mask
,
client
->
index
);
#endif
#endif
if
((
client
)
&&
(
client
!=
serverClient
)
&&
(
!
client
->
clientGone
)
&&
((
filter
==
CantBeFiltered
)
||
(
mask
&
filter
)))
{
...
...
@@ -1700,10 +1721,17 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
if
(
WID
(
inputInfo
.
pointer
->
valuator
->
motionHintWindow
)
==
pEvents
->
u
.
keyButtonPointer
.
event
)
{
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"
\n
motionHintWindow == keyButtonPointer.event
\n
"
);
}
#else
if
(
debug_events
)
ErrorF
(
"
\n
"
);
fprintf
(
stderr
,
"motionHintWindow == keyButtonPointer.event
\n
"
);
#endif
#endif
return
1
;
/* don't send, but pretend we did */
}
pEvents
->
u
.
u
.
detail
=
NotifyHint
;
...
...
@@ -1740,16 +1768,26 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
}
WriteEventsToClient
(
client
,
count
,
pEvents
);
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
fprintf
(
stderr
,
" delivered
\n
"
);
#else
if
(
debug_events
)
ErrorF
(
" delivered
\n
"
);
#endif
#endif
return
1
;
}
else
{
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
fprintf
(
stderr
,
"
\n
"
);
#else
if
(
debug_events
)
ErrorF
(
"
\n
"
);
#endif
#endif
return
0
;
}
}
...
...
@@ -3116,6 +3154,12 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
xevieEventSent
=
0
;
else
{
xeviemouse
=
mouse
;
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: Going to send XEVIE event.
\n
"
);
}
#endif
WriteToClient
(
clients
[
xevieClientIndex
],
sizeof
(
xEvent
),
(
char
*
)
xE
);
return
;
}
...
...
@@ -3170,14 +3214,38 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
#if !defined(XFree86Server) || !defined(XINPUT)
xE
->
u
.
u
.
detail
=
butc
->
map
[
key
];
#endif
#ifdef NX_DEBUG_INPUT
if
(
xE
->
u
.
u
.
detail
==
0
)
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: WARNING! detail == 0"
" for ButtonPress.
\n
"
);
}
return
;
}
#else
if
(
xE
->
u
.
u
.
detail
==
0
)
return
;
#endif
if
(
xE
->
u
.
u
.
detail
<=
5
)
butc
->
state
|=
(
Button1Mask
>>
1
)
<<
xE
->
u
.
u
.
detail
;
filters
[
MotionNotify
]
=
Motion_Filter
(
butc
);
if
(
!
grab
)
#ifdef NX_DEBUG_INPUT
if
(
CheckDeviceGrabs
(
mouse
,
xE
,
0
,
count
))
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: CheckDeviceGrabs"
" returned True for ButtonPress.
\n
"
);
}
return
;
}
#else
if
(
CheckDeviceGrabs
(
mouse
,
xE
,
0
,
count
))
return
;
#endif
break
;
case
ButtonRelease
:
mouse
->
valuator
->
motionHintWindow
=
NullWindow
;
...
...
@@ -3189,8 +3257,20 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
#if !defined(XFree86Server) || !defined(XINPUT)
xE
->
u
.
u
.
detail
=
butc
->
map
[
key
];
#endif
#ifdef NX_DEBUG_INPUT
if
(
xE
->
u
.
u
.
detail
==
0
)
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: WARNING! detail == 0"
" for ButtonRelease.
\n
"
);
}
return
;
}
#else
if
(
xE
->
u
.
u
.
detail
==
0
)
return
;
#endif
if
(
xE
->
u
.
u
.
detail
<=
5
)
butc
->
state
&=
~
((
Button1Mask
>>
1
)
<<
xE
->
u
.
u
.
detail
);
filters
[
MotionNotify
]
=
Motion_Filter
(
butc
);
...
...
@@ -3201,6 +3281,36 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
FatalError
(
"bogus pointer event from ddx"
);
}
}
#ifdef NX_DEBUG_INPUT
else
if
(
!
CheckMotion
(
xE
))
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: CheckMotion returned False"
" for MotionNotify.
\n
"
);
}
return
;
}
if
(
grab
)
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: Going to deliver grabbed "
"events (count = %d).
\n
"
,
count
);
}
DeliverGrabbedEvent
(
xE
,
mouse
,
deactivateGrab
,
count
);
}
else
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: Going to deliver device "
"events (count = %d).
\n
"
,
count
);
}
DeliverDeviceEvents
(
sprite
.
win
,
xE
,
NullGrab
,
NullWindow
,
mouse
,
count
);
}
#else
else
if
(
!
CheckMotion
(
xE
))
return
;
if
(
grab
)
...
...
@@ -3208,6 +3318,7 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
else
DeliverDeviceEvents
(
sprite
.
win
,
xE
,
NullGrab
,
NullWindow
,
mouse
,
count
);
#endif
if
(
deactivateGrab
)
(
*
mouse
->
DeactivateGrab
)(
mouse
);
}
...
...
nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c.NX.original
View file @
6f5e20bc
...
...
@@ -189,6 +189,10 @@ xEvent *xeviexE;
#include "Windows.h"
#include "Args.h"
#ifdef NX_DEBUG_INPUT
extern int nxagentDebugInput;
#endif
extern Display *nxagentDisplay;
extern WindowPtr nxagentLastEnteredWindow;
...
...
@@ -1682,11 +1686,28 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
int i;
int type;
#ifdef DEBUG
#ifdef NX_DEBUG_INPUT
if (grab && nxagentDebugInput && grab->window)
{
fprintf(stderr, "TryClientEvents: Grab window is [0x%x].\n",
(unsigned int)grab->window->drawable.id);
if (!SameClient(grab, client))
fprintf(stderr, "TryClientEvents: Events are going to be "
"discarded.\n");
}
#endif
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if (nxagentDebugInput == 1)
fprintf(stderr, "Event([%d, %d], mask=0x%x), client=%d",
pEvents->u.u.type, pEvents->u.u.detail, (unsigned int)mask,
client->index);
#else
if (debug_events) ErrorF(
"Event([%d, %d], mask=0x%x), client=%d",
pEvents->u.u.type, pEvents->u.u.detail, mask, client->index);
#endif
#endif
if ((client) && (client != serverClient) && (!client->clientGone) &&
((filter == CantBeFiltered) || (mask & filter)))
{
...
...
@@ -1700,10 +1721,17 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
if (WID(inputInfo.pointer->valuator->motionHintWindow) ==
pEvents->u.keyButtonPointer.event)
{
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if (nxagentDebugInput == 1)
{
fprintf(stderr,"\nmotionHintWindow == keyButtonPointer.event\n");
}
#else
if (debug_events) ErrorF("\n");
fprintf(stderr,"motionHintWindow == keyButtonPointer.event\n");
#endif
#endif
return 1; /* don't send, but pretend we did */
}
pEvents->u.u.detail = NotifyHint;
...
...
@@ -1740,16 +1768,26 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
}
WriteEventsToClient(client, count, pEvents);
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if (nxagentDebugInput == 1)
fprintf(stderr, " delivered\n");
#else
if (debug_events) ErrorF( " delivered\n");
#endif
#endif
return 1;
}
else
{
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if (nxagentDebugInput == 1)
fprintf(stderr, "\n");
#else
if (debug_events) ErrorF("\n");
#endif
#endif
return 0;
}
}
...
...
@@ -3116,6 +3154,12 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
xevieEventSent = 0;
else {
xeviemouse = mouse;
#ifdef NX_DEBUG_INPUT
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: Going to send XEVIE event.\n");
}
#endif
WriteToClient(clients[xevieClientIndex], sizeof(xEvent), (char *)xE);
return;
}
...
...
@@ -3170,14 +3214,38 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
#if !defined(XFree86Server) || !defined(XINPUT)
xE->u.u.detail = butc->map[key];
#endif
#ifdef NX_DEBUG_INPUT
if (xE->u.u.detail == 0)
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: WARNING! detail == 0"
" for ButtonPress.\n");
}
return;
}
#else
if (xE->u.u.detail == 0)
return;
#endif
if (xE->u.u.detail <= 5)
butc->state |= (Button1Mask >> 1) << xE->u.u.detail;
filters[MotionNotify] = Motion_Filter(butc);
if (!grab)
#ifdef NX_DEBUG_INPUT
if (CheckDeviceGrabs(mouse, xE, 0, count))
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: CheckDeviceGrabs"
" returned True for ButtonPress.\n");
}
return;
}
#else
if (CheckDeviceGrabs(mouse, xE, 0, count))
return;
#endif
break;
case ButtonRelease:
mouse->valuator->motionHintWindow = NullWindow;
...
...
@@ -3189,8 +3257,20 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
#if !defined(XFree86Server) || !defined(XINPUT)
xE->u.u.detail = butc->map[key];
#endif
#ifdef NX_DEBUG_INPUT
if (xE->u.u.detail == 0)
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: WARNING! detail == 0"
" for ButtonRelease.\n");
}
return;
}
#else
if (xE->u.u.detail == 0)
return;
#endif
if (xE->u.u.detail <= 5)
butc->state &= ~((Button1Mask >> 1) << xE->u.u.detail);
filters[MotionNotify] = Motion_Filter(butc);
...
...
@@ -3201,6 +3281,36 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
FatalError("bogus pointer event from ddx");
}
}
#ifdef NX_DEBUG_INPUT
else if (!CheckMotion(xE))
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: CheckMotion returned False"
" for MotionNotify.\n");
}
return;
}
if (grab)
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: Going to deliver grabbed "
"events (count = %d).\n", count);
}
DeliverGrabbedEvent(xE, mouse, deactivateGrab, count);
}
else
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: Going to deliver device "
"events (count = %d).\n", count);
}
DeliverDeviceEvents(sprite.win, xE, NullGrab, NullWindow,
mouse, count);
}
#else
else if (!CheckMotion(xE))
return;
if (grab)
...
...
@@ -3208,6 +3318,7 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
else
DeliverDeviceEvents(sprite.win, xE, NullGrab, NullWindow,
mouse, count);
#endif
if (deactivateGrab)
(*mouse->DeactivateGrab)(mouse);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment