VirtualBox

儲存庫 vbox 的更動 12290


忽略:
時間撮記:
2008-9-9 下午12:56:56 (16 年 以前)
作者:
vboxsync
訊息:

Additions/x11: cleaned up the X.org 1.5 mouse driver

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Additions/x11/xmouse/xorg15/vboxmouse.c

    r12282 r12290  
    4444 *
    4545 * Authors:
    46  *      Kristian Høgsberg ([email protected])
    47  *      Adam Jackson ([email protected])
     46 *      Kristian Høgsberg ([email protected])
     47 *      Adam Jackson ([email protected])
    4848 */
    4949
     
    6262#include <fcntl.h>
    6363
    64 #ifdef DEBUG_michael
    65 # define DEBUG_MOUSE 1
    66 #endif
    67 
    68 #ifdef DEBUG_MOUSE
    69 
    70 #define TRACE \
    71 do { \
    72     xf86Msg(X_INFO, __PRETTY_FUNCTION__); \
    73     xf86Msg(X_INFO, ": entering\n"); \
    74 } while(0)
    75 #define TRACE2 \
    76 do { \
    77     xf86Msg(X_INFO, __PRETTY_FUNCTION__); \
    78     xf86Msg(X_INFO, ": leaving\n"); \
    79 } while(0)
    80 #define TRACE3(...) \
    81 do { \
    82     xf86Msg(X_INFO, __PRETTY_FUNCTION__); \
    83     xf86Msg(X_INFO, __VA_ARGS__); \
    84 } while(0)
    85 
    86 #else  /* DEBUG_MOUSE not defined */
    87 
    88 #define TRACE       do { } while(0)
    89 #define TRACE2      do { } while(0)
    90 #define TRACE3(...) do { } while(0)
    91 
    92 #endif  /* DEBUG_MOUSE not defined */
    93 
    94 #define BOOL_STR(a) ((a) ? "TRUE" : "FALSE")
    95 
    96 typedef struct {
    97     int screen;
    98 } VBoxRec, *VBoxPtr;
    99 
    100 static const char *vboxDefaults[] = {
    101     NULL
    102 };
    103 
    104 
    10564static void
    10665VBoxReadInput(InputInfoPtr pInfo)
    10766{
    10867    uint32_t cx, cy, fFeatures;
    109     TRACE;
    110     VBoxPtr pVBox = pInfo->private;
    111     int screenWidth = screenInfo.screens[pVBox->screen]->width;
    112     int screenHeight = screenInfo.screens[pVBox->screen]->height;
    11368
    11469    if (RT_SUCCESS(VbglR3GetMouseStatus(&fFeatures, &cx, &cy)))
    115     {
    116         /* convert to screen resolution */
    117         int x, y;
    118         // x = (cx * screenWidth) / 65535;
    119         // y = (cy * screenHeight) / 65535;
    12070        /* send absolute movement */
    121         // xf86PostMotionEvent(pInfo->dev, 1, 0, 2, x, y);
    12271        xf86PostMotionEvent(pInfo->dev, 1, 0, 2, cx, cy);
    123     }
    124 }
    125 
    126 static void
    127 VBoxPtrCtrlProc(DeviceIntPtr device, PtrCtrl *ctrl)
    128 {
    129     /* Nothing to do, dix handles all settings */
    13072}
    13173
     
    13476{
    13577    InputInfoPtr pInfo;
    136     VBoxPtr pVBox;
    13778    int xrc;
    13879
    13980    pInfo = device->public.devicePrivate;
    140     pVBox = pInfo->private;
    14181
    14282    if (!InitValuatorClassDeviceStruct(device, 2, GetMotionHistory,
     
    14787    }
    14888
    149     /* X valuator */
     89    /* Tell the server about the range of axis values we report */
    15090    xf86InitValuatorAxisStruct(device, 0, 0 /* min X */, 65536 /* max X */,
    15191                               10000, 0, 10000);
    15292    xf86InitValuatorDefaults(device, 0);
    15393
    154     /* Y valuator */
    15594    xf86InitValuatorAxisStruct(device, 1, 0 /* min Y */, 65536 /* max Y */,
    15695                               10000, 0, 10000);
     
    15897    xf86MotionHistoryAllocate(pInfo);
    15998
    160     if (!InitPtrFeedbackClassDeviceStruct(device, VBoxPtrCtrlProc)) {
    161         xf86Msg(X_ERROR, "%s: InitPtrFeedbackClassDeviceStruct failed\n",
    162                 pInfo->name);
    163         return BadAlloc;
    164     }
    165 
    16699    return Success;
    167100}
     
    171104{
    172105    InputInfoPtr pInfo;
    173     VBoxPtr pVBox;
    174106    int rc, xrc;
    175107
    176108    pInfo = device->public.devicePrivate;
    177     pVBox = pInfo->private;
    178109
    179110    switch (what)
     
    186117        }
    187118        xf86Msg(X_CONFIG, "%s: Mouse Integration associated with screen %d\n",
    188                 pInfo->name, pVBox->screen);
     119                pInfo->name,
     120                xf86SetIntOption(pInfo->options, "ScreenNumber", 0));
    189121        break;
    190122
     
    202134
    203135        xf86AddEnabledDevice(pInfo);
    204         device->public.on = TRUE;
    205         break;
    206            
     136        device->public.on = TRUE;
     137        break;
     138   
    207139    case DEVICE_OFF:
    208140        xf86Msg(X_INFO, "%s: Off.\n", pInfo->name);
    209141        VbglR3SetMouseStatus(0);
    210142        xf86RemoveEnabledDevice(pInfo);
    211         device->public.on = FALSE;
    212         break;
     143        device->public.on = FALSE;
     144        break;
    213145
    214146    case DEVICE_CLOSE:
    215147        VbglR3Term();
    216         xf86Msg(X_INFO, "%s: Close\n", pInfo->name);
    217         break;
     148        xf86Msg(X_INFO, "%s: Close\n", pInfo->name);
     149        break;
    218150    }
    219151
     
    239171    InputInfoPtr pInfo;
    240172    const char *device;
    241     VBoxPtr pVBox;
    242173
    243174    if (!(pInfo = xf86AllocateInput(drv, 0)))
    244         return NULL;
     175        return NULL;
    245176
    246177    /* Initialise the InputInfoRec. */
     
    254185            XI86_ALWAYS_CORE | XI86_OPEN_ON_INIT;
    255186
    256     if (!(pVBox = xcalloc(sizeof(*pVBox), 1)))
    257         return pInfo;
    258     pInfo->private = pVBox;
    259 
    260     xf86CollectInputOptions(pInfo, vboxDefaults, NULL);
     187    xf86CollectInputOptions(pInfo, NULL, NULL);
    261188    xf86ProcessCommonOptions(pInfo, pInfo->options);
    262189
    263     pVBox->screen = xf86SetIntOption(pInfo->options, "ScreenNumber", 0);
    264 
    265     device = xf86CheckStrOption(dev->commonOptions, "Path", "/dev/vboxadd");
    266     if (!device)
    267         device = xf86CheckStrOption(dev->commonOptions, "Device",
    268                                     "/dev/vboxadd");
    269     if (!device) {
    270         xf86Msg(X_ERROR, "%s: No device specified.\n", pInfo->name);
    271         xf86DeleteInput(pInfo, 0);
    272         return NULL;
    273     }
    274        
     190    device = xf86CheckStrOption(dev->commonOptions, "Device",
     191                                "/dev/vboxadd");
     192
    275193    xf86Msg(X_CONFIG, "%s: Device: \"%s\"\n", pInfo->name, device);
    276194    do {
     
    281199    if (pInfo->fd < 0) {
    282200        xf86Msg(X_ERROR, "Unable to open VirtualBox device \"%s\".\n", device);
    283         xf86DeleteInput(pInfo, 0);
     201        xf86DeleteInput(pInfo, 0);
    284202        return NULL;
    285203    }
    286204
    287205    if (VBoxProbe(pInfo) != Success) {
    288         xf86DeleteInput(pInfo, 0);
     206        xf86DeleteInput(pInfo, 0);
    289207        return NULL;
    290208    }
    291209
    292210    pInfo->flags |= XI86_CONFIGURED;
    293     pInfo->flags |= XI86_POINTER_CAPABLE | XI86_SEND_DRAG_EVENTS |
    294             XI86_ALWAYS_CORE | XI86_OPEN_ON_INIT | XI86_CONFIGURED;
    295211    return pInfo;
    296212}
     
    306222};
    307223
    308 static void
    309 VBoxUnplug(pointer      p)
    310 {
    311 }
    312 
    313224static pointer
    314 VBoxPlug(pointer        module,
    315           pointer       options,
    316           int           *errmaj,
    317           int           *errmin)
     225VBoxPlug(pointer module,
     226          pointer options,
     227          int *errmaj,
     228          int *errmin)
    318229{
    319230    xf86AddInputDriver(&VBOXMOUSE, module, 0);
     
    339250    &VBoxVersionRec,
    340251    VBoxPlug,
    341     VBoxUnplug
     252    NULL
    342253};
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette