ref: 91bd4afbfba948539be7f5586140d94437194ad1
parent: b0d8fc03ff8dc1772291e751c4a13fd8d96a6eaf
author: Michael Misch <michealmisch1985@gmail.com>
date: Mon Sep 7 00:37:12 PDT 2020
Stashing changes, will likely have to bundle libdraw though to build fully
--- a/meson.build
+++ b/meson.build
@@ -4,18 +4,16 @@
'../../mi/miinitext.c',
]
-x9dev_dep = [
- common_dep,
-]
-
x9dev_server = executable(
'x9dev',
srcs,
include_directories: [
inc,
- include_directories('/usr/local/plan9/include')
- ],
- dependencies: x9dev_dep,
+ include_directories('/usr/local/plan9/include'),
+ ],
+ dependencies: [
+ common_dep,
+ ],
link_with: [
libxserver_main,
libxserver_fb,
@@ -23,6 +21,7 @@
libxserver_xkb_stubs,
libxserver_glx,
libglxvnd,
+ libxserver_miext_shadow,
],
install: true,
)
--- a/plan9.c
+++ b/plan9.c
@@ -4,7 +4,7 @@
#include <libc.h>
#include <keyboard.h>
-#include "draw.h"
+#include <draw.h>
#include "x9dev.h"
extern void ErrorF(char *, ...);
@@ -15,7 +15,6 @@
void
x9devInfoInit(void)
{
- Rectangle r;
char buf[256];
if(initdraw(NULL, 0, "x9dev") < 0)
@@ -128,10 +127,6 @@
return 0;
}
n = 0;
- }
- if (rune == Kdel) {
- ErrorF("delete\n");
- raise(SIGINT);
}
if (rune == Kdown)
rune = 0x99;
--- a/x9dev.c
+++ b/x9dev.c
@@ -51,6 +51,8 @@
#include "xkbsrv.h"
#include "xserver-properties.h"
#include "keymap.h"
+#include "exevents.h"
+#include "extinit.h"
static DeviceIntPtr x9devMouse;
static DeviceIntPtr x9devKeybd;
@@ -112,16 +114,7 @@
{
}
-
void
-ddxInitGlobals(void)
-{
- whiteRoot = TRUE;
- dispatchExceptionAtReset = FALSE;
-}
-
-
-void
DDXRingBell(int volume, int pitch, int duration)
{
}
@@ -140,7 +133,6 @@
return modmap[k] != 0;
}
-
void
ProcessInputEvents(void)
{
@@ -243,21 +235,13 @@
}
-extern fd_set EnabledDevices, LastSelectMask;
-
static void
-x9devWakeupHandler(int index, pointer blockData, unsigned long result, pointer pReadmask)
+x9devWakeupHandler(ScreenPtr scr, int result)
{
- fd_set fs;
-
if (result <= 0)
return;
- XFD_ANDSET(&fs, &LastSelectMask, &EnabledDevices);
- if (!XFD_ANYSET(&fs))
- return;
-
while (x9devMouseHandle())
;
while (x9devKeybdHandle())
@@ -293,29 +277,24 @@
static int
-x9devKeybdProc(DeviceIntPtr pDevice, int what)
+x9devKeybdProc(DeviceIntPtr pDev, int what)
{
- DevicePtr pDev = (DevicePtr)pDevice;
switch (what) {
case DEVICE_INIT:
x9devInitModmap();
- /* The middle two need to go away to an Xkb call */
- //if (!InitKeyboardDeviceStruct(pDev, &keysyms, modmap,
- if(!InitKeyboardDeviceStruct(pDev, NULL,
+ if (!InitKeyboardDeviceStruct(pDev, NULL,
(BellProcPtr)NoopDDA, (KbdCtrlProcPtr)NoopDDA))
FatalError("can't init keyboard");
+ pDev->inited = TRUE;
break;
-
case DEVICE_ON:
- pDev->on = TRUE;
- AddEnabledDevice(x9di.keybdFd);
+ pDev->enabled = TRUE;
break;
-
case DEVICE_CLOSE:
+ break;
case DEVICE_OFF:
- pDev->on = FALSE;
- RemoveEnabledDevice(x9di.keybdFd);
+ pDev->enabled = FALSE;
break;
}
return Success;
@@ -330,15 +309,15 @@
Atom btn_labels[3] = {0};
Atom axes_labels[2] = {0};
- btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT);
- btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE);
- btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT);
- axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X);
- axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
-
switch (what) {
case DEVICE_INIT:
+ btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT);
+ btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE);
+ btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT);
+
+ axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X);
+ axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
InitPointerDeviceStruct(pDev, map, 3, btn_labels,
(PtrCtrlProcPtr)NoopDDA, GetMotionHistorySize(), 2, axes_labels);
break;
@@ -345,13 +324,11 @@
case DEVICE_ON:
pDev->on = TRUE;
- AddEnabledDevice(x9di.mouseFd);
break;
case DEVICE_CLOSE:
case DEVICE_OFF:
pDev->on = FALSE;
- RemoveEnabledDevice(x9di.mouseFd);
break;
}
return Success;
@@ -361,16 +338,20 @@
void
InitInput(int argc, char *argv[])
{
+ Atom xiclass;
+
x9devMouse = AddInputDevice(serverClient, x9devMouseProc, TRUE);
- RegisterPointerDevice(x9devMouse);
x9devKeybd = AddInputDevice(serverClient, x9devKeybdProc, TRUE);
- RegisterKeyboardDevice(x9devKeybd);
+ xiclass = MakeAtom(XI_MOUSE, sizeof(XI_MOUSE) - 1, TRUE);
+ AssignTypeAndName(x9devMouse, xiclass, "x9dev mouse");
+ xiclass = MakeAtom(XI_KEYBOARD, sizeof(XI_KEYBOARD) - 1, TRUE);
+ AssignTypeAndName(x9devKeybd, xiclass, "x9dev keyboard");
+
mieqInit();
}
-
static void
-x9devCursorLimits(ScreenPtr spr, CursorPtr cpr, BoxPtr hot, BoxPtr topleft)
+x9devCursorLimits(DeviceIntPtr dptr, ScreenPtr spr, CursorPtr cpr, BoxPtr hot, BoxPtr topleft)
{
*topleft = *hot;
}
@@ -391,7 +372,7 @@
static Bool
x9devCreateResources(ScreenPtr pScreen)
{
- Bool ret;
+ Bool ret = 0;
pScreen->CreateScreenResources = x9devCreateResourcesPtr;
if (pScreen->CreateScreenResources)
@@ -410,13 +391,12 @@
}
static Bool
-x9devScreenInit(int index, ScreenPtr pScreen, int argc, char *argv[])
+x9devScreenInit(ScreenPtr pScreen, int argc, char *argv[])
{
int v, i;
unsigned long r, g, b;
static int first = 1;
- assert(index == 0);
if (first) {
x9devInfoInit();
first = 0;
@@ -468,8 +448,6 @@
return FALSE;
#endif
- miInitializeBackingStore(pScreen);
-
if (!shadowSetup(pScreen))
return FALSE;
@@ -484,17 +462,17 @@
void
-InitOutput(ScreenInfo *screenInfo, int argc, char *argv[])
+InitOutput(ScreenInfo *si, int argc, char *argv[])
{
int i;
- screenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
- screenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- screenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- screenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
- screenInfo->numPixmapFormats = NUMFORMATS;
+ si->imageByteOrder = IMAGE_BYTE_ORDER;
+ si->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
+ si->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
+ si->bitmapBitOrder = BITMAP_BIT_ORDER;
+ si->numPixmapFormats = NUMFORMATS;
for (i = 0; i < NUMFORMATS; i++)
- screenInfo->formats[i] = formats[i];
+ si->formats[i] = formats[i];
if (AddScreen(x9devScreenInit, argc, argv) < 0)
FatalError("InitOutput: can't addscreen");
}