hlfw.ca

x9dev

Download patch

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");
 }