Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Christian Rauch
xserver
Commits
83a388c9
Commit
83a388c9
authored
Aug 26, 2000
by
Keith Packard
Browse files
Try to avoid hitting hardware during server reset when not active, add
KdPicture code
parent
42238011
Changes
9
Hide whitespace changes
Inline
Side-by-side
hw/kdrive/Imakefile
View file @
83a388c9
...
...
@@ -3,13 +3,13 @@ XCOMM $XFree86: xc/programs/Xserver/hw/kdrive/Imakefile,v 1.1 1999/11/19 13:53:4
#include <Server.tmpl>
SRCS = kcmap.c kcolor.c kdrive.c kinfo.c kinput.c kmap.c knoop.c ktest.c \
vga.c kasync.c kmode.c kcurscol.c
vga.c kasync.c kmode.c kcurscol.c
kpict.c
OBJS = kcmap.o kcolor.o kdrive.o kinfo.o kinput.o kmap.o knoop.o ktest.o \
vga.o kasync.o kmode.o kcurscol.o
vga.o kasync.o kmode.o kcurscol.o
kpict.o
INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \
-I../../fb -I../../mi -I../../include -I../../os \
-I../../fb -I../../mi
-I../../render
-I../../include -I../../os \
-I$(EXTINCSRC) -I$(XINCLUDESRC)
NormalLibraryObjectRule()
...
...
hw/kdrive/linux/linux.c
View file @
83a388c9
...
...
@@ -85,8 +85,6 @@ LinuxInit ()
}
close
(
fd
);
/* ErrorF("(using VT number %d)\n\n", vtno); */
sprintf
(
vtname
,
"/dev/tty%d"
,
vtno
);
/* /dev/tty1-64 */
if
((
LinuxConsoleFd
=
open
(
vtname
,
O_RDWR
|
O_NDELAY
,
0
))
<
0
)
...
...
@@ -184,11 +182,49 @@ LinuxFindPci (CARD16 vendor, CARD16 device, CARD32 count, KdCardAttr *attr)
}
void
Linux
Enable
(
void
)
Linux
SetSwitchMode
(
int
mode
)
{
struct
sigaction
act
;
struct
vt_mode
VT
;
if
(
ioctl
(
LinuxConsoleFd
,
VT_GETMODE
,
&
VT
)
<
0
)
{
FatalError
(
"LinuxInit: VT_GETMODE failed
\n
"
);
}
if
(
mode
==
VT_PROCESS
)
{
act
.
sa_handler
=
LinuxVTRequest
;
sigemptyset
(
&
act
.
sa_mask
);
act
.
sa_flags
=
0
;
act
.
sa_restorer
=
0
;
sigaction
(
SIGUSR1
,
&
act
,
0
);
VT
.
mode
=
mode
;
VT
.
relsig
=
SIGUSR1
;
VT
.
acqsig
=
SIGUSR1
;
}
else
{
act
.
sa_handler
=
SIG_IGN
;
sigemptyset
(
&
act
.
sa_mask
);
act
.
sa_flags
=
0
;
act
.
sa_restorer
=
0
;
sigaction
(
SIGUSR1
,
&
act
,
0
);
VT
.
mode
=
mode
;
VT
.
relsig
=
0
;
VT
.
acqsig
=
0
;
}
if
(
ioctl
(
LinuxConsoleFd
,
VT_SETMODE
,
&
VT
)
<
0
)
{
FatalError
(
"LinuxInit: VT_SETMODE failed
\n
"
);
}
}
void
LinuxEnable
(
void
)
{
if
(
enabled
)
return
;
if
(
kdSwitchPending
)
...
...
@@ -199,32 +235,16 @@ LinuxEnable (void)
/*
* now get the VT
*/
LinuxSetSwitchMode
(
VT_AUTO
);
if
(
ioctl
(
LinuxConsoleFd
,
VT_ACTIVATE
,
vtno
)
!=
0
)
{
Error
F
(
"LinuxInit: VT_ACTIVATE failed
\n
"
);
Fatal
Error
(
"LinuxInit: VT_ACTIVATE failed
\n
"
);
}
if
(
ioctl
(
LinuxConsoleFd
,
VT_WAITACTIVE
,
vtno
)
!=
0
)
{
ErrorF
(
"LinuxInit: VT_WAITACTIVE failed
\n
"
);
}
if
(
ioctl
(
LinuxConsoleFd
,
VT_GETMODE
,
&
VT
)
<
0
)
{
FatalError
(
"LinuxInit: VT_GETMODE failed
\n
"
);
}
act
.
sa_handler
=
LinuxVTRequest
;
sigemptyset
(
&
act
.
sa_mask
);
act
.
sa_flags
=
0
;
act
.
sa_restorer
=
0
;
sigaction
(
SIGUSR1
,
&
act
,
0
);
VT
.
mode
=
VT_PROCESS
;
VT
.
relsig
=
SIGUSR1
;
VT
.
acqsig
=
SIGUSR1
;
if
(
ioctl
(
LinuxConsoleFd
,
VT_SETMODE
,
&
VT
)
<
0
)
{
FatalError
(
"LinuxInit: VT_SETMODE VT_PROCESS failed
\n
"
);
FatalError
(
"LinuxInit: VT_WAITACTIVE failed
\n
"
);
}
LinuxSetSwitchMode
(
VT_PROCESS
);
if
(
ioctl
(
LinuxConsoleFd
,
KDSETMODE
,
KD_GRAPHICS
)
<
0
)
{
FatalError
(
"LinuxInit: KDSETMODE KD_GRAPHICS failed
\n
"
);
...
...
hw/kdrive/src/kasync.c
View file @
83a388c9
...
...
@@ -141,7 +141,6 @@ KdCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
fbPolyFillRect
(
pDrawable
,
pGC
,
nrect
,
prect
);
}
#if 0
void
KdCheckPolyFillArc
(
DrawablePtr
pDrawable
,
GCPtr
pGC
,
int
narcs
,
xArc
*
pArcs
)
...
...
@@ -149,7 +148,6 @@ KdCheckPolyFillArc (DrawablePtr pDrawable, GCPtr pGC,
KdCheckSync
(
pDrawable
->
pScreen
);
fbPolyFillArc
(
pDrawable
,
pGC
,
narcs
,
pArcs
);
}
#endif
void
KdCheckImageGlyphBlt
(
DrawablePtr
pDrawable
,
GCPtr
pGC
,
...
...
hw/kdrive/src/kdrive.c
View file @
83a388c9
...
...
@@ -300,6 +300,9 @@ ddxGiveUp ()
AbortDDX
();
}
Bool
kdDumbDriver
;
Bool
kdSoftCursor
;
void
KdParseScreen
(
KdScreenInfo
*
screen
,
char
*
arg
)
...
...
@@ -307,6 +310,10 @@ KdParseScreen (KdScreenInfo *screen,
char
*
bpp
;
int
fb
;
screen
->
dumb
=
kdDumbDriver
;
screen
->
softCursor
=
kdSoftCursor
;
kdDumbDriver
=
FALSE
;
kdSoftCursor
=
FALSE
;
screen
->
width
=
0
;
screen
->
height
=
0
;
screen
->
rate
=
0
;
...
...
@@ -360,9 +367,6 @@ KdParseScreen (KdScreenInfo *screen,
arg
++
;
}
Bool
kdDumbDriver
;
Bool
kdSoftCursor
;
int
KdProcessArgument
(
int
argc
,
char
**
argv
,
int
i
)
{
...
...
@@ -389,10 +393,6 @@ KdProcessArgument (int argc, char **argv, int i)
}
screen
=
KdScreenInfoAdd
(
card
);
KdParseScreen
(
screen
,
argv
[
i
+
1
]);
screen
->
dumb
=
kdDumbDriver
;
screen
->
softCursor
=
kdSoftCursor
;
kdDumbDriver
=
FALSE
;
kdSoftCursor
=
FALSE
;
}
else
UseMsg
();
...
...
@@ -493,11 +493,14 @@ KdCloseScreen (int index, ScreenPtr pScreen)
* Restore video hardware when last screen is closed
*/
if
(
screen
==
card
->
screenList
)
(
*
card
->
cfuncs
->
restore
)
(
card
);
{
if
(
kdEnabled
)
(
*
card
->
cfuncs
->
restore
)
(
card
);
}
if
(
!
pScreenPriv
->
screen
->
dumb
)
(
*
card
->
cfuncs
->
finiAccel
)
(
pScreen
);
if
(
!
pScreenPriv
->
screen
->
softCursor
)
(
*
card
->
cfuncs
->
finiCursor
)
(
pScreen
);
...
...
@@ -686,11 +689,17 @@ KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
(
void
)
p8Init
(
pScreen
,
PSEUDO8_USE_DEFAULT
);
#endif
#if 0
fbInitValidateTree (pScreen);
#endif
#if 0
pScreen->backingStoreSupport = Always;
#ifdef FB_OLD_SCREEN
miInitializeBackingStore (pScreen, &pScreenPriv->BackingStoreFuncs);
#else
miInitializeBackingStore (pScreen);
#endif
#endif
/*
* Wrap CloseScreen, the order now is:
...
...
@@ -710,6 +719,9 @@ KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
miDCInitialize
(
pScreen
,
&
kdPointerScreenFuncs
);
}
if
(
!
KdPictureInit
(
pScreen
,
0
,
0
))
return
FALSE
;
if
(
!
fbCreateDefColormap
(
pScreen
))
{
return
FALSE
;
...
...
hw/kdrive/src/kdrive.h
View file @
83a388c9
...
...
@@ -297,7 +297,9 @@ void
KdCheckPolyFillRect
(
DrawablePtr
pDrawable
,
GCPtr
pGC
,
int
nrect
,
xRectangle
*
prect
);
#define KdCheckPolyFillArc miPolyFillArc
void
KdCheckPolyFillArc
(
DrawablePtr
pDrawable
,
GCPtr
pGC
,
int
narcs
,
xArc
*
pArcs
);
void
KdCheckImageGlyphBlt
(
DrawablePtr
pDrawable
,
GCPtr
pGC
,
...
...
hw/kdrive/src/kinput.c
View file @
83a388c9
...
...
@@ -42,6 +42,7 @@ static Bool kdTimeoutPending;
static
int
kdBellPitch
;
static
int
kdBellDuration
;
static
int
kdLeds
;
static
Bool
kdInputEnabled
;
int
kdMinScanCode
;
int
kdMaxScanCode
;
...
...
@@ -172,15 +173,22 @@ KdDisableInput (void)
KdRemoveFd
(
kdMouseFd
);
if
(
kdKeyboardFd
>=
0
)
KdRemoveFd
(
kdKeyboardFd
);
kdInputEnabled
=
FALSE
;
}
void
KdEnableInput
(
void
)
{
xEvent
xE
;
kdInputEnabled
=
TRUE
;
if
(
kdMouseFd
>=
0
)
KdAddFd
(
kdMouseFd
);
if
(
kdKeyboardFd
>=
0
)
KdAddFd
(
kdKeyboardFd
);
/* reset screen saver */
xE
.
u
.
keyButtonPointer
.
time
=
GetTimeInMillis
();
NoticeEventTime
(
&
xE
);
}
static
int
...
...
@@ -210,7 +218,7 @@ KdMouseProc(DeviceIntPtr pDevice, int onoff)
if
(
kdMouseFuncs
)
{
kdMouseFd
=
(
*
kdMouseFuncs
->
Init
)
();
if
(
kdMouseFd
>=
0
)
if
(
kdMouseFd
>=
0
&&
kdInputEnabled
)
KdAddFd
(
kdMouseFd
);
}
break
;
...
...
@@ -222,7 +230,8 @@ KdMouseProc(DeviceIntPtr pDevice, int onoff)
pKdPointer
=
0
;
if
(
kdMouseFd
>=
0
)
{
KdRemoveFd
(
kdMouseFd
);
if
(
kdInputEnabled
)
KdRemoveFd
(
kdMouseFd
);
(
*
kdMouseFuncs
->
Fini
)
(
kdMouseFd
);
kdMouseFd
=
-
1
;
}
...
...
@@ -241,14 +250,16 @@ LegalModifier(unsigned int key, DevicePtr pDev)
static
void
KdBell
(
int
volume
,
DeviceIntPtr
pDev
,
pointer
ctrl
,
int
something
)
{
(
*
kdKeyboardFuncs
->
Bell
)
(
volume
,
kdBellPitch
,
kdBellDuration
);
if
(
kdInputEnabled
)
(
*
kdKeyboardFuncs
->
Bell
)
(
volume
,
kdBellPitch
,
kdBellDuration
);
}
static
void
KdSetLeds
(
void
)
{
(
*
kdKeyboardFuncs
->
Leds
)
(
kdLeds
);
if
(
kdInputEnabled
)
(
*
kdKeyboardFuncs
->
Leds
)
(
kdLeds
);
}
void
...
...
@@ -297,7 +308,7 @@ KdKeybdProc(DeviceIntPtr pDevice, int onoff)
if
(
kdKeyboardFuncs
)
{
kdKeyboardFd
=
(
*
kdKeyboardFuncs
->
Init
)
();
if
(
kdKeyboardFd
>=
0
)
if
(
kdKeyboardFd
>=
0
&&
kdInputEnabled
)
KdAddFd
(
kdKeyboardFd
);
}
break
;
...
...
@@ -309,7 +320,8 @@ KdKeybdProc(DeviceIntPtr pDevice, int onoff)
pDev
->
on
=
FALSE
;
if
(
kdKeyboardFd
>=
0
)
{
KdRemoveFd
(
kdKeyboardFd
);
if
(
kdInputEnabled
)
KdRemoveFd
(
kdKeyboardFd
);
(
*
kdKeyboardFuncs
->
Fini
)
(
kdKeyboardFd
);
kdKeyboardFd
=
-
1
;
}
...
...
@@ -413,6 +425,7 @@ KdInitInput(KdMouseFuncs *pMouseFuncs,
kdLeds
=
0
;
kdBellPitch
=
1000
;
kdBellDuration
=
200
;
kdInputEnabled
=
TRUE
;
KdInitModMap
();
KdInitAutoRepeats
();
KdResetInputMachine
();
...
...
@@ -710,7 +723,7 @@ xEvent kdHeldEvent;
int
kdEmulationDx
,
kdEmulationDy
;
#define EMULATION_WINDOW 10
#define EMULATION_TIMEOUT
3
0
#define EMULATION_TIMEOUT
10
0
#define EventX(e) ((e)->u.keyButtonPointer.rootX)
#define EventY(e) ((e)->u.keyButtonPointer.rootY)
...
...
@@ -1003,7 +1016,9 @@ KdReleaseAllKeys (void)
xE
.
u
.
keyButtonPointer
.
time
=
GetTimeInMillis
();
xE
.
u
.
u
.
type
=
KeyRelease
;
xE
.
u
.
u
.
detail
=
key
;
KdBlockSigio
();
KdHandleKeyboardEvent
(
&
xE
);
KdUnblockSigio
();
}
}
...
...
@@ -1082,12 +1097,14 @@ KdEnqueueKeyboardEvent(unsigned char scan_code,
return
;
}
}
#if 0
if (xE.u.u.type == KeyRelease && !IsKeyDown (key_code))
{
xE.u.u.type = KeyPress;
KdHandleKeyboardEvent (&xE);
xE.u.u.type = KeyRelease;
}
#endif
KdCheckSpecialKeys
(
&
xE
);
KdHandleKeyboardEvent
(
&
xE
);
}
...
...
hw/kdrive/src/kpict.c
0 → 100644
View file @
83a388c9
/*
* $Id$
*
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#include
"kdrive.h"
#include
"picturestr.h"
void
KdCheckComposite
(
CARD8
op
,
PicturePtr
pSrc
,
PicturePtr
pMask
,
PicturePtr
pDst
,
INT16
xSrc
,
INT16
ySrc
,
INT16
xMask
,
INT16
yMask
,
INT16
xDst
,
INT16
yDst
,
CARD16
width
,
CARD16
height
)
{
KdCheckSync
(
pDst
->
pDrawable
->
pScreen
);
fbComposite
(
op
,
pSrc
,
pMask
,
pDst
,
xSrc
,
ySrc
,
xMask
,
yMask
,
xDst
,
yDst
,
width
,
height
);
}
KdPictureInit
(
ScreenPtr
pScreen
,
PictFormatPtr
formats
,
int
nformats
)
{
PictureScreenPtr
ps
;
if
(
!
fbPictureInit
(
pScreen
,
formats
,
nformats
))
return
FALSE
;
ps
=
GetPictureScreen
(
pScreen
);
ps
->
Composite
=
KdCheckComposite
;
return
TRUE
;
}
hw/kdrive/trident/trident.c
View file @
83a388c9
/*
* Id
: trident.c,v 1.2 1999/11/02 08:17:24 keithp Exp
$
*
$
Id$
*
* Copyright 1999 Keith Packard
*
...
...
@@ -115,7 +115,7 @@ tridentPause ()
struct
timeval
tv
;
tv
.
tv_sec
=
0
;
tv
.
tv_usec
=
20
0
*
1000
;
tv
.
tv_usec
=
5
0
*
1000
;
select
(
1
,
0
,
0
,
0
,
&
tv
);
}
...
...
@@ -125,6 +125,7 @@ tridentPreserve (KdCardInfo *card)
TridentCardInfo
*
tridentc
=
card
->
driver
;
fbdevPreserve
(
card
);
tridentPause
();
tridentc
->
save
.
reg_3c4_0e
=
tridentReadIndex
(
tridentc
,
0x3c4
,
0x0e
);
tridentc
->
save
.
reg_3d4_36
=
tridentReadIndex
(
tridentc
,
0x3d4
,
0x36
);
tridentc
->
save
.
reg_3d4_39
=
tridentReadIndex
(
tridentc
,
0x3d4
,
0x39
);
...
...
@@ -189,7 +190,9 @@ tridentResetMMIO (TridentCardInfo *tridentc)
#ifdef TRI_DEBUG
fprintf
(
stderr
,
"Reset MMIO
\n
"
);
#endif
tridentPause
();
tridentWriteIndex
(
tridentc
,
0x3ce
,
0x21
,
tridentc
->
save
.
reg_3ce_21
);
tridentPause
();
tridentWriteIndex
(
tridentc
,
0x3d4
,
0x62
,
tridentc
->
save
.
reg_3d4_62
);
tridentWriteIndex
(
tridentc
,
0x3d4
,
0x39
,
tridentc
->
save
.
reg_3d4_39
);
tridentWriteIndex
(
tridentc
,
0x3d4
,
0x36
,
tridentc
->
save
.
reg_3d4_36
);
...
...
@@ -229,6 +232,7 @@ tridentDPMS (ScreenPtr pScreen, int mode)
TridentCardInfo
*
tridentc
=
pScreenPriv
->
card
->
driver
;
tridentWriteIndex
(
tridentc
,
0x3ce
,
0x21
,
tridentDPMSModes
[
mode
]);
tridentPause
();
return
TRUE
;
}
...
...
hw/kdrive/trident/tridentdraw.c
View file @
83a388c9
...
...
@@ -636,7 +636,7 @@ static const GCOps tridentOps = {
KdCheckPolyArc
,
miFillPolygon
,
tridentPolyFillRect
,
KdCheck
PolyFillArc
,
mi
PolyFillArc
,
miPolyText8
,
miPolyText16
,
miImageText8
,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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