diary/Kojima

・X11R7.1(その2)

その後,しばらくビルドは順調に進んだけど,Xdmx(ってなんだ?)をリンクする際に

gcc -m64 -g -O2 -o Xdmx -rdynamic Xdmx-dmx.o Xdmx-dmxcb.o
Xdmx-dmxcmap.o Xdmx-dmxcursor.o Xdmx-dmxdpms.o Xdmx-dmxextension.o
...
/usr/X11/lib/libXau.so /usr/X11/lib/libXdmcp.so -lm
../../dix/.libs/libdix.a(devices.o): In function `CoreKeyboardBell':
/sources/X/srcs/xserver/dix/devices.c:216: undefined reference to `DDXRingBell'
input/libdmxinput.a(dmxinputinit.o): In function `dmxDeviceOnOff':
/sources/X/srcs/xserver/hw/dmx/input/dmxinputinit.c:437: undefined reference to `miPointerGetMotionBufferSize'
/sources/X/srcs/xserver/hw/dmx/input/dmxinputinit.c:437: undefined reference to `miPointerGetMotionEvents'
input/libdmxinput.a(dmxinputinit.o): In function `dmxAddDevice':
/sources/X/srcs/xserver/hw/dmx/input/dmxinputinit.c:714: undefined reference to `miRegisterPointerDevice'
input/libdmxinput.a(dmxxinput.o): In function `ChangePointerDevice':
/sources/X/srcs/xserver/hw/dmx/input/dmxxinput.c:102: undefined reference to `miPointerGetMotionEvents'
/sources/X/srcs/xserver/hw/dmx/input/dmxxinput.c:103: undefined reference to `miPointerGetMotionBufferSize'
collect2: ld returned 1 exit status
make[3]: *** [Xdmx] Error 1
make[3]: Leaving directory `/sources/X/srcs/xserver/hw/dmx'

なんてエラーが発生.ソースコードを grep したら,このあたりの定義は xserver/mi/mipointer.h に

extern int miPointerGetMotionBufferSize(
    void
) _X_DEPRECATED;
extern int miPointerGetMotionEvents(
    DeviceIntPtr /*pPtr*/,
    xTimecoord * /*coords*/,
    unsigned long /*start*/,
    unsigned long /*stop*/,
    ScreenPtr /*pScreen*/
);

という風にあるのだけど,find で定義を探しても

root:/sources/X/srcs# find . -name "*.[ch]" | xargs grep miPointerGetMotionEvents
./driver/xf86-input-evdev/src/evdev_axes.c:                                       miPointerGetMotionEvents,
./driver/xf86-input-mouse/src/mouse.c:                          miPointerGetMotionEvents,
./driver/xf86-input-vmmouse/src/vmmouse.c:   "miPointerGetMotionEvents",
./driver/xf86-input-vmmouse/src/vmmouse.c:                            miPointerGetMotionEvents, pMse->Ctrl,
./xserver/hw/darwin/darwin.c:                        miPointerGetMotionEvents,
./xserver/hw/dmx/input/dmxinputinit.c:                                              miPointerGetMotionEvents,
./xserver/hw/dmx/input/dmxmotion.c: * This file provides functions similar to miPointerGetMotionEvents and
./xserver/hw/dmx/input/dmxmotion.c:/** This routine performs the same function as \a miPointerGetMotionEvents:
./xserver/hw/dmx/input/dmxmotion.c: * \a miPointerGetMotionEvents for devices with only 2 axes (i.e., core
./xserver/hw/dmx/input/dmxmotion.c: * Because compatibility with miPointerGetMotionEvents is not possible,
./xserver/hw/dmx/input/dmxxinput.c:    new_dev->valuator->GetMotionProc   = miPointerGetMotionEvents;
./xserver/hw/xfree86/os-support/bsd/bsd_mouse.c:                                miPointerGetMotionEvents, 
./xserver/hw/xfree86/os-support/sco/sco_mouse.c:        miPointerGetMotionEvents, pMse->Ctrl,
./xserver/hw/xfree86/os-support/usl/usl_mouse.c:                              miPointerGetMotionEvents, pMse->Ctrl,
./xserver/hw/xgl/egl/kinput.c:      miPointerGetMotionEvents,
./xserver/hw/xgl/xglinput.c:                             miPointerGetMotionEvents,
./xserver/hw/xwin/winmouse.c:                          miPointerGetMotionEvents,
./xserver/mi/mipointer.h:extern int miPointerGetMotionEvents(

と,使っている側は見つかるものの,実際の定義はされてない感じ.

それでは,と 7.0 のソースコードを見たら mi/mipointer.c に

/*
 * Pointer/CursorDisplay interface routines
 */

int
miPointerGetMotionBufferSize ()
{
    return MOTION_SIZE;
}

int
miPointerGetMotionEvents (pPtr, coords, start, stop, pScreen)
    DeviceIntPtr    pPtr;
    xTimecoord      *coords;
    unsigned long   start, stop;
    ScreenPtr       pScreen;
...

といった定義がされている模様.このあたりを 7.1 の mipointer.c に持っていけば何とかなるのだろうか??


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:41