mirror of
https://github.com/X11Libre/xserver.git
synced 2026-04-14 17:18:09 +00:00
kdrive: add some new functions
Add definitions for the forward declarations from the previous commit In preparation for adding the Xfbdev X11 kdrive server Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
This commit is contained in:
committed by
Enrico Weigelt
parent
033cd4b2fe
commit
5f2d4da4ea
@@ -184,9 +184,65 @@ KdEnableScreen(ScreenPtr pScreen)
|
||||
}
|
||||
|
||||
void
|
||||
ddxGiveUp(enum ExitCode error)
|
||||
KdResume(void)
|
||||
{
|
||||
KdCardInfo *card;
|
||||
KdScreenInfo *screen;
|
||||
|
||||
if (kdEnabled) {
|
||||
KdDoSwitchCmd("resume");
|
||||
for (card = kdCardInfo; card; card = card->next) {
|
||||
if (card->cfuncs->preserve)
|
||||
(*card->cfuncs->preserve) (card);
|
||||
for (screen = card->screenList; screen; screen = screen->next)
|
||||
if (screen->mynum == card->selected && screen->pScreen)
|
||||
KdEnableScreen(screen->pScreen);
|
||||
}
|
||||
KdEnableInput();
|
||||
KdReleaseAllKeys();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
KdEnableScreens(void)
|
||||
{
|
||||
if (!kdEnabled) {
|
||||
kdEnabled = TRUE;
|
||||
if (kdOsFuncs->Enable)
|
||||
(*kdOsFuncs->Enable) ();
|
||||
}
|
||||
KdResume();
|
||||
}
|
||||
|
||||
void
|
||||
KdProcessSwitch(void)
|
||||
{
|
||||
if (kdEnabled)
|
||||
KdDisableScreens();
|
||||
else
|
||||
KdEnableScreens();
|
||||
}
|
||||
|
||||
static void
|
||||
AbortDDX(enum ExitCode error)
|
||||
{
|
||||
KdDisableScreens();
|
||||
if (kdOsFuncs) {
|
||||
if (kdEnabled && kdOsFuncs->Disable)
|
||||
(*kdOsFuncs->Disable) ();
|
||||
if (kdOsFuncs->Fini)
|
||||
(*kdOsFuncs->Fini) ();
|
||||
KdDoSwitchCmd("stop");
|
||||
}
|
||||
|
||||
if (kdCaughtSignal)
|
||||
OsAbort();
|
||||
}
|
||||
|
||||
void
|
||||
ddxGiveUp(enum ExitCode error)
|
||||
{
|
||||
AbortDDX(error);
|
||||
}
|
||||
|
||||
Bool kdDumbDriver;
|
||||
@@ -939,6 +995,20 @@ KdAddScreen(ScreenInfo * pScreenInfo,
|
||||
AddScreen(KdScreenInit, argc, argv);
|
||||
}
|
||||
|
||||
#if 0 /* This function is not used currently */
|
||||
|
||||
int
|
||||
KdDepthToFb(ScreenPtr pScreen, int depth)
|
||||
{
|
||||
KdScreenPriv(pScreen);
|
||||
|
||||
for (fb = 0; fb <= KD_MAX_FB && pScreenPriv->screen->fb.frameBuffer; fb++)
|
||||
if (pScreenPriv->screen->fb.depth == depth)
|
||||
return fb;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void
|
||||
KdInitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
|
||||
{
|
||||
|
||||
@@ -399,6 +399,8 @@ Bool
|
||||
void
|
||||
KdEnableScreens(void);
|
||||
|
||||
void KdResume(void);
|
||||
|
||||
void
|
||||
KdProcessSwitch(void);
|
||||
|
||||
@@ -501,6 +503,8 @@ KdEnqueuePointerEvent(KdPointerInfo * pi, unsigned long flags, int rx, int ry,
|
||||
void _KdEnqueuePointerEvent(KdPointerInfo * pi, int type, int x, int y, int z,
|
||||
int b, int absrel, Bool force);
|
||||
|
||||
void KdReleaseAllKeys(void);
|
||||
|
||||
void KdSetLed(KdKeyboardInfo * ki, int led, Bool on);
|
||||
|
||||
void
|
||||
@@ -510,6 +514,8 @@ void
|
||||
KdComputePointerMatrix(KdPointerMatrix *pointer, Rotation randr, int width,
|
||||
int height);
|
||||
|
||||
void KdScreenToPointerCoords(int *x, int *y);
|
||||
|
||||
void
|
||||
KdBlockHandler(ScreenPtr pScreen, void *timeout);
|
||||
|
||||
|
||||
@@ -154,6 +154,7 @@ static void KdAddFd(int fd, int i)
|
||||
KdNonBlockFd(fd);
|
||||
InputThreadRegisterDev(fd, KdNotifyFd, (void *) (intptr_t) i);
|
||||
#ifdef KDRIVE_KBD
|
||||
/* AddEnabledDevice(fd); */
|
||||
memset(&act, '\0', sizeof act);
|
||||
act.sa_handler = KdSigio;
|
||||
|
||||
@@ -592,6 +593,20 @@ KdComputePointerMatrix(KdPointerMatrix * m, Rotation randr, int width,
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
KdScreenToPointerCoords(int *x, int *y)
|
||||
{
|
||||
int (*m)[3] = kdPointerMatrix.matrix;
|
||||
int div = m[0][1] * m[1][0] - m[1][1] * m[0][0];
|
||||
int sx = *x;
|
||||
int sy = *y;
|
||||
|
||||
*x = (m[0][1] * sy - m[0][1] * m[1][2] + m[1][1] * m[0][2] -
|
||||
m[1][1] * sx) / div;
|
||||
*y = (m[1][0] * sx + m[0][0] * m[1][2] - m[1][0] * m[0][2] -
|
||||
m[0][0] * sy) / div;
|
||||
}
|
||||
|
||||
static void
|
||||
KdKbdCtrl(DeviceIntPtr pDevice, KeybdCtrl * ctrl)
|
||||
{
|
||||
@@ -1740,6 +1755,36 @@ KdReceiveTimeout(KdPointerInfo * pi)
|
||||
KdRunMouseMachine(pi, timeout, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
void
|
||||
KdReleaseAllKeys(void)
|
||||
{
|
||||
#if 0
|
||||
int key;
|
||||
KdKeyboardInfo *ki;
|
||||
|
||||
#ifndef KDRIVE_KBD
|
||||
input_lock();
|
||||
#else
|
||||
KdBlockSigio();
|
||||
#endif
|
||||
|
||||
for (ki = kdKeyboards; ki; ki = ki->next) {
|
||||
for (key = ki->keySyms.minKeyCode; key < ki->keySyms.maxKeyCode; key++) {
|
||||
if (key_is_down(ki->dixdev, key, KEY_POSTED | KEY_PROCESSED)) {
|
||||
KdHandleKeyboardEvent(ki, KeyRelease, key);
|
||||
QueueGetKeyboardEvents(ki->dixdev, KeyRelease, key, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef KDRIVE_KBD
|
||||
input_unlock();
|
||||
#else
|
||||
KdUnblockSigio();
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
KdCheckLock(void)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user