Commit 20aa3410 authored by Vitaliy Margolen's avatar Vitaliy Margolen Committed by Alexandre Julliard

dinput: Implement getting DIPROP_VIDPID property for evdev joystick driver. Fixes bug 26418.

parent eee070f1
......@@ -110,6 +110,8 @@ struct JoyDev {
/* data returned by the EVIOCGABS() ioctl */
struct wine_input_absinfo axes[ABS_MAX];
WORD vendor_id, product_id;
};
struct JoystickImpl
......@@ -187,6 +189,7 @@ static void find_joydevs(void)
int no_ff_check = 0;
int j;
struct JoyDev *new_joydevs;
struct input_id device_id = {0};
snprintf(buf, sizeof(buf), EVDEVPREFIX"%d", i);
......@@ -282,6 +285,14 @@ static void find_joydevs(void)
}
}
if (ioctl(fd, EVIOCGID, &device_id) == -1)
WARN("ioct(EVIOCGBIT, EV_ABS) failed: %d %s\n", errno, strerror(errno));
else
{
joydev.vendor_id = device_id.vendor;
joydev.product_id = device_id.product;
}
if (!have_joydevs)
new_joydevs = HeapAlloc(GetProcessHeap(), 0, sizeof(struct JoyDev));
else
......@@ -946,6 +957,17 @@ static HRESULT WINAPI JoystickWImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface, REF
break;
}
case (DWORD_PTR) DIPROP_VIDPID:
{
LPDIPROPDWORD pd = (LPDIPROPDWORD)pdiph;
if (!This->joydev->product_id || !This->joydev->vendor_id)
return DIERR_UNSUPPORTED;
pd->dwData = MAKELONG(This->joydev->vendor_id, This->joydev->product_id);
TRACE("DIPROP_VIDPID(%08x)\n", pd->dwData);
break;
}
default:
return JoystickWGenericImpl_GetProperty(iface, rguid, pdiph);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment