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
92f41213
Unverified
Commit
92f41213
authored
Jun 11, 2019
by
Mike Gabriel
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'uli42-pr/fix_broken_cursor_handling' into 3.6.x
Attributes GH PR #810:
https://github.com/ArcticaProject/nx-libs/pull/810
parents
126cbe1f
a736122f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
81 additions
and
69 deletions
+81
-69
events.c
nx-X11/programs/Xserver/dix/events.c
+4
-0
NXevents.c
nx-X11/programs/Xserver/hw/nxagent/NXevents.c
+75
-66
io.c
nx-X11/programs/Xserver/os/io.c
+0
-2
glyph.c
nx-X11/programs/Xserver/render/glyph.c
+2
-1
No files found.
nx-X11/programs/Xserver/dix/events.c
View file @
92f41213
...
...
@@ -245,6 +245,8 @@ static WindowPtr XYToWindow(
int
y
);
static
Bool
CheckMotion
(
xEvent
*
xE
);
extern
int
lastEvent
;
static
Mask
lastEventMask
;
...
...
@@ -1951,6 +1953,7 @@ XYToWindow(int x, int y)
}
#endif
/* NXAGENT_SERVER */
#ifndef NXAGENT_SERVER
static
Bool
CheckMotion
(
xEvent
*
xE
)
{
...
...
@@ -2015,6 +2018,7 @@ CheckMotion(xEvent *xE)
}
return
TRUE
;
}
#endif
/* NXAGENT_SERVER */
void
WindowsRestructured
()
...
...
nx-X11/programs/Xserver/hw/nxagent/NXevents.c
View file @
92f41213
...
...
@@ -381,79 +381,88 @@ XYToWindow(int x, int y)
return
spriteTrace
[
spriteTraceGood
-
1
];
}
//
static Bool
//
CheckMotion(xEvent *xE)
//
{
//
WindowPtr prevSpriteWin = sprite.win;
//
static
Bool
CheckMotion
(
xEvent
*
xE
)
{
WindowPtr
prevSpriteWin
=
sprite
.
win
;
#ifdef PANORAMIX
//
if(!noPanoramiXExtension)
//
return XineramaCheckMotion(xE);
if
(
!
noPanoramiXExtension
)
return
XineramaCheckMotion
(
xE
);
#endif
//
if (xE && !syncEvents.playingEvents)
//
{
//
if (sprite.hot.pScreen != sprite.hotPhys.pScreen)
//
{
//
sprite.hot.pScreen = sprite.hotPhys.pScreen;
//
ROOT = sprite.hot.pScreen->root;
//
}
//
sprite.hot.x = XE_KBPTR.rootX;
//
sprite.hot.y = XE_KBPTR.rootY;
//
if (sprite.hot.x < sprite.physLimits.x1)
//
sprite.hot.x = sprite.physLimits.x1;
//
else if (sprite.hot.x >= sprite.physLimits.x2)
//
sprite.hot.x = sprite.physLimits.x2 - 1;
//
if (sprite.hot.y < sprite.physLimits.y1)
//
sprite.hot.y = sprite.physLimits.y1;
//
else if (sprite.hot.y >= sprite.physLimits.y2)
//
sprite.hot.y = sprite.physLimits.y2 - 1;
if
(
xE
&&
!
syncEvents
.
playingEvents
)
{
if
(
sprite
.
hot
.
pScreen
!=
sprite
.
hotPhys
.
pScreen
)
{
sprite
.
hot
.
pScreen
=
sprite
.
hotPhys
.
pScreen
;
ROOT
=
sprite
.
hot
.
pScreen
->
root
;
}
sprite
.
hot
.
x
=
XE_KBPTR
.
rootX
;
sprite
.
hot
.
y
=
XE_KBPTR
.
rootY
;
if
(
sprite
.
hot
.
x
<
sprite
.
physLimits
.
x1
)
sprite
.
hot
.
x
=
sprite
.
physLimits
.
x1
;
else
if
(
sprite
.
hot
.
x
>=
sprite
.
physLimits
.
x2
)
sprite
.
hot
.
x
=
sprite
.
physLimits
.
x2
-
1
;
if
(
sprite
.
hot
.
y
<
sprite
.
physLimits
.
y1
)
sprite
.
hot
.
y
=
sprite
.
physLimits
.
y1
;
else
if
(
sprite
.
hot
.
y
>=
sprite
.
physLimits
.
y2
)
sprite
.
hot
.
y
=
sprite
.
physLimits
.
y2
-
1
;
#ifdef SHAPE
//
if (sprite.hotShape)
//
ConfineToShape(sprite.hotShape, &sprite.hot.x, &sprite.hot.y);
if
(
sprite
.
hotShape
)
ConfineToShape
(
sprite
.
hotShape
,
&
sprite
.
hot
.
x
,
&
sprite
.
hot
.
y
);
#endif
// sprite.hotPhys = sprite.hot;
//
// /*
// * This code force cursor position to be inside the
// * root window of the agent. We can't view a reason
// * to do this and it interacts in an undesirable way
// * with toggling fullscreen.
// *
// * if ((sprite.hotPhys.x != XE_KBPTR.rootX) ||
// * (sprite.hotPhys.y != XE_KBPTR.rootY))
// * {
// * (*sprite.hotPhys.pScreen->SetCursorPosition)(
// * sprite.hotPhys.pScreen,
// * sprite.hotPhys.x, sprite.hotPhys.y, FALSE);
// * }
// */
//
// XE_KBPTR.rootX = sprite.hot.x;
// XE_KBPTR.rootY = sprite.hot.y;
// }
//
// sprite.win = XYToWindow(sprite.hot.x, sprite.hot.y);
sprite
.
hotPhys
=
sprite
.
hot
;
#ifdef NXAGENT_SERVER
/*
* This code force cursor position to be inside the
* root window of the agent. We can't view a reason
* to do this and it interacts in an undesirable way
* with toggling fullscreen.
*
* if ((sprite.hotPhys.x != XE_KBPTR.rootX) ||
* (sprite.hotPhys.y != XE_KBPTR.rootY))
* {
* (*sprite.hotPhys.pScreen->SetCursorPosition)(
* sprite.hotPhys.pScreen,
* sprite.hotPhys.x, sprite.hotPhys.y, FALSE);
* }
*/
#else
if
((
sprite
.
hotPhys
.
x
!=
XE_KBPTR
.
rootX
)
||
(
sprite
.
hotPhys
.
y
!=
XE_KBPTR
.
rootY
))
{
(
*
sprite
.
hotPhys
.
pScreen
->
SetCursorPosition
)(
sprite
.
hotPhys
.
pScreen
,
sprite
.
hotPhys
.
x
,
sprite
.
hotPhys
.
y
,
FALSE
);
}
#endif
XE_KBPTR
.
rootX
=
sprite
.
hot
.
x
;
XE_KBPTR
.
rootY
=
sprite
.
hot
.
y
;
}
sprite
.
win
=
XYToWindow
(
sprite
.
hot
.
x
,
sprite
.
hot
.
y
);
#ifdef notyet
//
if (!(sprite.win->deliverableEvents &
//
Motion_Filter(inputInfo.pointer->button))
//
!syncEvents.playingEvents)
//
{
//
/* XXX Do PointerNonInterestBox here */
//
}
if
(
!
(
sprite
.
win
->
deliverableEvents
&
Motion_Filter
(
inputInfo
.
pointer
->
button
))
!
syncEvents
.
playingEvents
)
{
/* XXX Do PointerNonInterestBox here */
}
#endif
//
if (sprite.win != prevSpriteWin)
//
{
//
if (prevSpriteWin != NullWindow) {
//
if (!xE)
//
UpdateCurrentTimeIf();
//
DoEnterLeaveEvents(prevSpriteWin, sprite.win, NotifyNormal);
//
}
//
PostNewCursor();
//
return FALSE;
//
}
//
return TRUE;
//
}
if
(
sprite
.
win
!=
prevSpriteWin
)
{
if
(
prevSpriteWin
!=
NullWindow
)
{
if
(
!
xE
)
UpdateCurrentTimeIf
();
DoEnterLeaveEvents
(
prevSpriteWin
,
sprite
.
win
,
NotifyNormal
);
}
PostNewCursor
();
return
FALSE
;
}
return
TRUE
;
}
void
DefineInitialRootWindow
(
register
WindowPtr
win
)
...
...
nx-X11/programs/Xserver/os/io.c
View file @
92f41213
...
...
@@ -424,8 +424,6 @@ ReadRequestFromClient(ClientPtr client)
if
(
oci
->
ignoreBytes
>
0
)
{
assert
(
needed
==
oci
->
ignoreBytes
||
needed
==
oci
->
size
);
oci
->
ignoreBytes
-=
gotnow
;
needed
=
gotnow
=
0
;
/*
* The _XSERVTransRead call above may return more or fewer bytes than we
* want to ignore. Ignore the smaller of the two sizes.
...
...
nx-X11/programs/Xserver/render/glyph.c
View file @
92f41213
...
...
@@ -589,7 +589,8 @@ miGlyphs(CARD8 op,
height
=
extents
.
y2
-
extents
.
y1
;
pMaskPixmap
=
(
*
pScreen
->
CreatePixmap
)
(
pScreen
,
width
,
height
,
maskFormat
->
depth
);
maskFormat
->
depth
,
CREATE_PIXMAP_USAGE_SCRATCH
);
if
(
!
pMaskPixmap
)
return
;
component_alpha
=
NeedsComponent
(
maskFormat
->
format
);
...
...
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